diff --git a/csharp/.gitignore b/csharp/.gitignore
new file mode 100644
index 0000000..76c414f
--- /dev/null
+++ b/csharp/.gitignore
@@ -0,0 +1,40 @@
+#
+# 	Untracked directories
+#
+src/AddressBook/bin
+src/AddressBook/obj
+src/ProtocolBuffers/bin/
+src/ProtocolBuffers/obj/
+src/ProtocolBuffers/objCF
+src/ProtocolBuffers.Test/bin/
+src/ProtocolBuffers.Test/obj/
+src/ProtocolBuffersLite.Test/bin/
+src/ProtocolBuffersLite.Test/obj/
+src/ProtoBench/bin/
+src/ProtoBench/obj/
+src/ProtoDump/bin/
+src/ProtoDump/obj/
+src/ProtoGen/bin/
+src/ProtoGen/obj/
+src/ProtoGen.Test/bin/
+src/ProtoGen.Test/obj/
+src/ProtoMunge/bin/
+src/ProtoMunge/obj/
+mono/bin
+mono/tmp
+mono/protoc
+build_output
+build_temp
+build/msbuild*.log
+
+#
+# 	Untracked files
+#
+*.user
+*.suo
+_ReSharper.*
+*.sln.cache
+mono/TestResult.xml
+mono/.libs
+mono/*.exe
+mono/*.dll
diff --git a/csharp/.hgignore b/csharp/.hgignore
new file mode 100644
index 0000000..998d183
--- /dev/null
+++ b/csharp/.hgignore
@@ -0,0 +1,23 @@
+syntax: glob
+
+build_output/
+build_temp/
+bin/
+obj/
+*.cache
+_ReSharper.*
+*.user
+*.suo
+*.bat
+*.zip
+*.DotSettings
+build/*.log
+BenchmarkResults.txt
+
+lib/NUnit/tools/nunit-console.exe.config
+
+syntax: regexp
+build/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,5}/
+
+# Ignore Roslyn files
+^src/.*\.sln\.ide/
\ No newline at end of file
diff --git a/csharp/CHANGES.txt b/csharp/CHANGES.txt
new file mode 100644
index 0000000..90e9d77
--- /dev/null
+++ b/csharp/CHANGES.txt
@@ -0,0 +1,144 @@
+===============================================================================
+Welcome to the C# port of Google Protocol Buffers, written by Jon Skeet
+(skeet@pobox.com) based on the work of many talented people.
+
+For more information about this port, visit its homepage:
+http://protobuf-csharp-port.googlecode.com
+
+For more information about Protocol Buffers in general, visit the project page 
+for the C++, Java and Python project:
+http://protobuf.googlecode.com
+===============================================================================
+RELEASE NOTES - Version 2.4.1.555
+===============================================================================
+
+Changes:
+- Upgrade solution format to Visual Studio 2012.
+- Add the ability to print a builder (not just a message)
+- TextGenerator introduces a new overload of PrintTo
+- Munge protoc's error format into a VS-C#-compatible output format.
+- Work to make ProtoGen clone that acts as a protoc.exe plugin.
+- Added the AllowPartiallyTrustedCallers attribute
+- Optimized enum parsing.
+
+Fixes:
+- Fix for bug in limited input stream's Position, Introduced Position on 
+  output stream
+- Fix for writing a character to a JSON output overflows allocated buffer
+- Optimize FromBase64String to return Empty when presented with empty string.
+- Use string.Concat instead of operator to avoid potential import problems
+- Issue 81: quoting for NUnit parameters.
+- Issue 56: NuGet package is noisy
+- Issue 70: Portable library project has some invalid Nunit-based code.
+- Issue 71: CodedInputStream.ReadBytes go to slow path unnecessarily
+- Issue 84: warning CS0219: The variable `size' is assigned but never used
+
+===============================================================================
+RELEASE NOTES - Version 2.4.1.521
+===============================================================================
+
+Changes:
+- Add generated_code_attributes option, defaulted to false
+- Added support for Portable library
+- Added 'Unsafe' static type in ByteString to allow direct buffer access
+
+Fixes:
+- Issue 50: The XML serializer will fail to deserialize a message with empty 
+  child message
+- Issue 45: Use of 'item' as a field name causes AmbiguousMatchException
+- Issue 49: Generated nested static Types class should be partial
+- Issue 38: Disable CLSCompliant warnings (3021)
+- Issue 40: proto_path does not work for command-line file names
+- Issue 54: should retire all bytes in buffer (bufferSize)
+- Issue 43: Fix to correct identical 'umbrella_classname' options from trying 
+  to write to the same filename.
+
+===============================================================================
+RELEASE NOTES - Version 2.4.1.473
+===============================================================================
+
+Features:
+- Added option service_generator_type to control service generation with
+  NONE, GENERIC, INTERFACE, or IRPCDISPATCH
+- Added interfaces IRpcDispatch and IRpcServerStub to provide for blocking
+  services and implementations.
+- Added ProtoGen.exe command-line argument "--protoc_dir=" to specify the 
+  location of protoc.exe.
+- Extracted interfaces for ICodedInputStream and ICodedOutputStream to allow
+  custom implementation of writers with both speed and size optimizations.
+- Addition of the "Google.ProtoBuffers.Serialization" assembly to support
+  reading and writing messages to/from XML, JSON, IDictionary<,> and others.
+- Several performance related fixes and tweeks
+- Issue 3:	Add option to mark generated code with attribute
+- Issue 20:	Support for decorating classes [Serializable]
+- Issue 21:	Decorate fields with [deprecated=true] as [System.Obsolete]
+- Issue 22:	Reusable Builder classes
+- Issue 24:	Support for using Json/Xml formats with ICodedInputStream
+- Issue 25: Added support for NuGet packages
+- Issue 31: Upgraded protoc.exe and descriptor to 2.4.1
+
+Fixes:
+- Issue 13:	Message with Field same name as message causes uncompilable .cs
+- Issue 16:	Does not integrate well with other tooling
+- Issue 19:	Support for negative enum values
+- Issue 26:	AddRange in GeneratedBuilder iterates twice.
+- Issue 27:	Remove XML documentation output from test projects to clear 
+  warnings/errors.
+- Issue 28: Circular message dependencies result in null default values for 
+  Message fields.
+- Issue 29: Message classes generated have a public default constructor.  You
+  can disable private ctor generation with the option generate_private_ctor.
+- Issue 35: Fixed a bug in ProtoGen handling of arguments with trailing \
+- Big-endian support for float, and double on Silverlight
+- Packed and Unpacked parsing allow for all repeated, as per version 2.3
+- Fix for leaving Builder a public ctor on internal classes for use with
+  generic "where T: new()" constraints.
+
+Other:
+- Changed the code signing key to a privately held key
+- Reformatted all code and line-endings to C# defaults
+- Reworking of performance benchmarks to produce reliable results, option /v2
+- Issue 34: Silverlight assemblies are now unit tested
+
+===============================================================================
+RELEASE NOTES - Version 2.3.0.277
+===============================================================================
+
+Features:
+- Added cls_compliance option to generate attributes indicating 
+  non-CLS-compliance.
+- Added file_extension option to control the generated output file's extension.
+- Added umbrella_namespace option to place the umbrella class into a nested
+  namespace to address issues with proto files having the same name as a 
+  message it contains.
+- Added output_directory option to set the output path for the source file(s).
+- Added ignore_google_protobuf option to avoid generating code for includes 
+  from the google.protobuf package.
+- Added the LITE framework (Google.ProtoBuffersLite.dll) and the ability to
+  generate code with "option optimize_for = LITE_RUNTIME;".
+- Added ability to invoke protoc.exe from within ProtoGen.exe.
+- Upgraded to protoc.exe (2.3) compiler.
+
+Fixes:
+- Issue 9:	Class cannot be static and sealed error
+- Issue 12:	default value for enumerate fields must be filled out
+
+Other:
+- Rewrite of build using MSBbuild instead of NAnt
+- Moved to NUnit Version 2.2.8.0
+- Changed to using secure .snk for releases
+
+===============================================================================
+RELEASE NOTES - Version 0.9.1
+===============================================================================
+
+Fixes:
+- issue 10:	Incorrect encoding of packed fields when serialized
+
+===============================================================================
+RELEASE NOTES - Version 0.9.0
+===============================================================================
+
+- Initial release
+
+===============================================================================
\ No newline at end of file
diff --git a/csharp/README.md b/csharp/README.md
new file mode 100644
index 0000000..7844062
--- /dev/null
+++ b/csharp/README.md
@@ -0,0 +1,12 @@
+This repo was originally exported from http://code.google.com/p/protobuf-csharp-port,
+and represents the latest "legacy" version of protobuf-csharp-port.
+
+This project has now been folded into the [main Google Protocol Buffers project](http://github.com/google/protobuf),
+and is being revamped to support proto3. It is not expected to be fully backwardly-compatible with
+the code in this repo - in particular, some of the C#-specific options may not be supported in the new
+codebase, and some of the generated code may differ. A new major version offers an opportunity to spring-clean,
+as it were.
+
+This repo exists as an acknowledgement that not everyone will want to immediately use the newer codebase,
+and that they may wish to make changes to the legacy codebase. I do not expect to make any changes within this
+repo, but it can be forked for further changes.
diff --git a/csharp/build/BuildAll.bat b/csharp/build/BuildAll.bat
new file mode 100644
index 0000000..9bee73c
--- /dev/null
+++ b/csharp/build/BuildAll.bat
@@ -0,0 +1,8 @@
+@echo off
+SET BUILD_TARGET=%~1
+SET BUILD_CONFIG=%~2
+
+IF "%BUILD_TARGET%"=="" SET BUILD_TARGET=Rebuild
+IF "%BUILD_CONFIG%"=="" SET BUILD_CONFIG=Debug
+
+CMD.exe /Q /C "CD %~dp0 && %WINDIR%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /nologo build.csproj /t:%BUILD_TARGET% /toolsversion:4.0 "/p:Configuration=%BUILD_CONFIG%" %3 %4 %5 %6
diff --git a/csharp/build/Common.targets b/csharp/build/Common.targets
new file mode 100644
index 0000000..2aa74df
--- /dev/null
+++ b/csharp/build/Common.targets
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+<!-- **********************************************************************************************
+Targets For Clean
+*********************************************************************************************** -->
+
+  <Target Name="_CleanFolder">
+    <Message Importance="normal" Text="Removing temporary directory '$(CleanFolderDirectory)'"/>
+    <Error Text="Can not remove empty directory name." Condition=" '$(CleanFolderDirectory)' == '' " />
+
+    <Exec WorkingDirectory="$(MSBuildProjectDirectory)" Condition="Exists($(CleanFolderDirectory))" Outputs="@(Ignore)"
+      Command="MOVE /Y &quot;$(CleanFolderDirectory)&quot; &quot;$(CleanFolderDirectory)-deleted&quot; > NUL" />
+    
+    <RemoveDir Directories="$(CleanFolderDirectory)-deleted" Condition="Exists('$(CleanFolderDirectory)-deleted')" />
+  </Target>
+
+  <Target Name="_CleanTempOutput">
+    <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="CleanFolderDirectory=%(TempBuildFolder.Identity);" Targets="_CleanFolder" />
+  </Target>
+  
+  <Target Name="_CleanAll" DependsOnTargets="_CleanTempOutput">
+    <MakeDir Directories="$(BuildTempDirectory)" />
+    <MakeDir Directories="$(BuildOutputDirectory)" />
+  </Target>
+
+<!-- **********************************************************************************************
+Targets For Build
+*********************************************************************************************** -->
+
+  <Target Name="_CompileAll">
+    <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=Rebuild;" Targets="_BuildAllConfigurations" />
+  </Target>
+
+  <Target Name="_BuildAllConfigurations">
+    <MSBuild Properties="TargetVersion=cf20;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" />
+    <MSBuild Properties="TargetVersion=cf35;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" />
+    <MSBuild Properties="TargetVersion=net20;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" />
+    <MSBuild Properties="TargetVersion=net35;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" />
+    <MSBuild Properties="TargetVersion=net40;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" />
+    <MSBuild Properties="TargetVersion=sl20;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" />
+    <MSBuild Properties="TargetVersion=sl30;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" />
+    <MSBuild Properties="TargetVersion=sl40;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" />
+    <MSBuild Properties="TargetVersion=pl40;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" />
+  </Target>
+
+<!-- **********************************************************************************************
+Targets For Tools
+*********************************************************************************************** -->
+
+  <Target Name="_BuildTools">
+    
+    <MSBuild Targets="Build" ToolsVersion="3.5" Projects="$(ProjectDirectory)\src\ProtocolBuffers.sln" Properties="Configuration=Release;Platform=Any CPU;" />
+    <Copy SourceFiles="%(ToolsOutputItem.Identity)" DestinationFolder="$(BuildOutputDirectory)\tools" />
+
+    <Copy SourceFiles="$(LibDirectory)\NUnit-config\nunit-console.v2.0.config" DestinationFiles="$(NUnitExePath).config" />
+    <Exec 
+      WorkingDirectory="%(ToolsTestContainer.RootDir)%(ToolsTestContainer.Directory)"
+      Command="&quot;$(NUnitExePath)&quot; /nologo /noshadow &quot;%(ToolsTestContainer.Identity)&quot; /xml:&quot;$(BuildTempDirectory)\%(ToolsTestContainer.Filename).xml&quot;" />
+    
+  </Target>
+
+<!-- **********************************************************************************************
+Targets For GenerateSource
+*********************************************************************************************** -->
+
+  <Target Name="_GenerateProjects">
+    <Exec Command="&quot;$(CsProjectProjector)&quot; csproj_templates src\ProtocolBuffersLibrary.sln" WorkingDirectory="$(ProjectDirectory)" />
+  </Target>
+  
+  <Target Name="_CleanTempSource">
+    <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="CleanFolderDirectory=$(SourceTempDirectory);" Targets="_CleanFolder" />
+    <MakeDir Directories="$(SourceTempDirectory)" />
+  </Target>
+  
+  <Target Name="_GenerateSource" DependsOnTargets="_CleanTempSource">
+    <Message Importance="high" Text="Generating source from proto files" />
+    <Exec Command="&quot;$(ProtocExePath)&quot; --proto_path=$(ProtosDirectory) --descriptor_set_out=compiled.pb @(Protos->'%(RelativeDir)%(Filename)%(Extension)', ' ')" WorkingDirectory="$(SourceTempDirectory)" />
+    <Exec Command="&quot;$(ProtogenExePath)&quot; compiled.pb" WorkingDirectory="$(SourceTempDirectory)" />
+  </Target>
+
+  <Target Name="_CopyGeneratedSource" DependsOnTargets="_GenerateSource">
+    <Copy SourceFiles="%(GeneratedSource.Identity)" DestinationFiles="%(GeneratedSource.TargetDirectory)\%(GeneratedSource.Filename)%(GeneratedSource.Extension)" />
+  </Target>
+
+<!-- **********************************************************************************************
+Targets For Package
+*********************************************************************************************** -->
+
+  <Target Name="_PackageAll">
+    <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=_Publish;" Targets="_BuildAllConfigurations" />
+  </Target>
+
+  <Target Name="_GeneratePackage">
+    <Copy SourceFiles="@(StaticPackageItem)" DestinationFolder="$(BuildOutputPackage)\%(StaticPackageItem.TargetDirectory)\%(StaticPackageItem.RecursiveDir)" />
+    <Exec Command="&quot;$(ZipExePath)&quot; a -tzip $(BuildTempDirectory)\$(PackageName)-binaries.zip * -x!*.pdb -r" WorkingDirectory="$(BuildOutputPackage)" />
+    <Exec Command="&quot;$(ZipExePath)&quot; a -tzip $(BuildTempDirectory)\$(PackageName)-symbols.zip * -r" WorkingDirectory="$(BuildOutputPackage)" />
+  </Target>
+
+<!-- **********************************************************************************************
+Targets For Benchmark
+*********************************************************************************************** -->
+
+  <Target Name="_RunBenchmarks">
+    <ItemGroup>
+      <BenchmarkParameter Include="Google.ProtocolBuffers.ProtoBench.SizeMessage1,ProtoBench" />
+      <BenchmarkParameter Include="google_message1.dat" />
+      <BenchmarkParameter Include="Google.ProtocolBuffers.ProtoBench.SpeedMessage1,ProtoBench" />
+      <BenchmarkParameter Include="google_message1.dat" />
+      <BenchmarkParameter Include="Google.ProtocolBuffers.ProtoBench.SizeMessage2,ProtoBench" />
+      <BenchmarkParameter Include="google_message2.dat" />
+      <BenchmarkParameter Include="Google.ProtocolBuffers.ProtoBench.SpeedMessage2,ProtoBench" />
+      <BenchmarkParameter Include="google_message2.dat" />
+    </ItemGroup>
+
+    <Message Text="Running ProtoBench.exe" />
+    <Exec Command="ProtoBench.exe $(BenchmarkArgs) @(BenchmarkParameter->'%(Identity)', ' ') &quot;/log:$(BenchmarkOutputFile)&quot;"
+          WorkingDirectory="$(SourceDirectory)\ProtoBench\bin\NET35\Release" />
+
+  </Target>
+
+</Project>
\ No newline at end of file
diff --git a/csharp/build/Google.ProtocolBuffers.nuspec b/csharp/build/Google.ProtocolBuffers.nuspec
new file mode 100644
index 0000000..c355cd4
--- /dev/null
+++ b/csharp/build/Google.ProtocolBuffers.nuspec
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="nuspec.xsd">
+  <metadata>
+    <id>Google.ProtocolBuffers</id>
+    <version>$version$</version>
+    <owners>Jon Skeet</owners>
+    <authors>Jon Skeet</authors>
+    <licenseUrl>http://code.google.com/p/protobuf-csharp-port/source/browse/license.txt</licenseUrl>
+    <projectUrl>http://code.google.com/p/protobuf-csharp-port/</projectUrl>
+    <requireLicenseAcceptance>false</requireLicenseAcceptance>
+    <copyright>Copyright 2008 Google Inc.  All rights reserved.</copyright>
+    <tags>Protocol Buffers Binary Serialization Format Google</tags>
+
+    <title>Google.ProtocolBuffers</title>
+    <summary>A managed code generator and library for Google's data interchange format.</summary>
+    <description><![CDATA[
+Protocol Buffers is a binary serialization format and technology, released to the open source community by Google in 2008.  
+Its primary use is to produce small fast binary representations of a 'message' or object for serialization or transportation.
+There are various implementations of Protocol Buffers in .NET. This project is a fairly close port of the Google Java implementation.
+
+There are two main parts:
+
+tools/protoc.exe, which takes the textual representation of the protocol buffer and turns it into a binary representation for use with ProtoGen.exe.
+tools/ProtoGen.exe, which takes binary representations of protocol buffer descriptors (as generated by the "stock" protoc binary supplied by Google) and creates C# source code. This is only required at build time.
+
+lib/*/Google.ProtocolBuffers.dll, which is a supporting library. This is required at execution time.
+lib/*/Google.ProtocolBuffers.Serialization.dll, a supplementary library that provides extensions for reading and writing protocol buffers to xml, json, and others.
+
+LINKS:
+
+Project Home    - http://code.google.com/p/protobuf-csharp-port
+Online Help     - http://help.protobuffers.net
+Developer Guide - http://code.google.com/apis/protocolbuffers/docs/overview.html
+Language Guide  - http://code.google.com/apis/protocolbuffers/docs/proto.html
+
+    ]]></description>
+	
+    <references>
+      <reference file="Google.ProtocolBuffers.dll"/>
+      <reference file="Google.ProtocolBuffers.Serialization.dll"/>
+    </references>
+  
+  </metadata>
+  <files>
+    <!-- Release Binaries -->
+    <file src="..\build_output\Release\**\Google.ProtocolBuffers.???" target="lib\" />
+    <file src="..\build_output\Release\**\Google.ProtocolBuffers.Serialization.???" target="lib\" />
+    <!-- Tools -->
+    <file src="..\build_output\tools\**\*" target="tools\" />
+    <file src="..\build_output\protos\**\*" target="tools\" />
+    <!-- Content -->
+    <file src="..\build_output\CHANGES.txt" target="tools\"/>
+    <file src="..\build_output\license.txt" target="tools\"/>
+    <file src="..\build_output\tools\protoc-license.txt" target="tools\"/>
+    <!-- Source -->
+    <file src="..\src\ProtocolBuffers\**\*.cs" target="src\ProtocolBuffers\"/>
+    <file src="..\src\ProtocolBuffers.Serialization\**\*.cs" target="src\ProtocolBuffers.Serialization\"/>
+  </files>
+</package>
diff --git a/csharp/build/Google.ProtocolBuffersLite.nuspec b/csharp/build/Google.ProtocolBuffersLite.nuspec
new file mode 100644
index 0000000..8b9107f
--- /dev/null
+++ b/csharp/build/Google.ProtocolBuffersLite.nuspec
@@ -0,0 +1,60 @@
+<?xml version="1.0"?>
+<package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="nuspec.xsd">
+  <metadata>
+    <id>Google.ProtocolBuffersLite</id>
+    <version>$version$</version>
+    <owners>Jon Skeet</owners>
+    <authors>Jon Skeet</authors>
+    <licenseUrl>http://code.google.com/p/protobuf-csharp-port/source/browse/license.txt</licenseUrl>
+    <projectUrl>http://code.google.com/p/protobuf-csharp-port/</projectUrl>
+    <requireLicenseAcceptance>false</requireLicenseAcceptance>
+    <copyright>Copyright 2008 Google Inc.  All rights reserved.</copyright>
+    <tags>Protocol Buffers Binary Serialization Format Google</tags>
+
+    <title>Google.ProtocolBuffersLite</title>
+    <summary>A managed code generator and library for Google's data interchange format.</summary>
+    <description><![CDATA[
+Protocol Buffers is a binary serialization format and technology, released to the open source community by Google in 2008.  
+Its primary use is to produce small fast binary representations of a 'message' or object for serialization or transportation.
+There are various implementations of Protocol Buffers in .NET. This project is a fairly close port of the Google Java implementation.
+
+There are two main parts:
+
+tools/protoc.exe, which takes the textual representation of the protocol buffer and turns it into a binary representation for use with ProtoGen.exe.
+tools/ProtoGen.exe, which takes binary representations of protocol buffer descriptors (as generated by the "stock" protoc binary supplied by Google) and creates C# source code. This is only required at build time.
+
+lib/*/Google.ProtocolBuffersLite.dll, which is a supporting library. This is required at execution time.
+lib/*/Google.ProtocolBuffersLite.Serialization.dll, a supplementary library that provides extensions for reading and writing protocol buffers to xml, json, and others.
+
+LINKS:
+
+Project Home    - http://code.google.com/p/protobuf-csharp-port
+Online Help     - http://help.protobuffers.net
+Developer Guide - http://code.google.com/apis/protocolbuffers/docs/overview.html
+Language Guide  - http://code.google.com/apis/protocolbuffers/docs/proto.html
+
+    ]]></description>
+	
+    <references>
+      <reference file="Google.ProtocolBuffersLite.dll"/>
+      <reference file="Google.ProtocolBuffersLite.Serialization.dll"/>
+    </references>
+  
+  </metadata>
+
+  <files>
+    <!-- Release Binaries -->
+    <file src="..\build_output\Release\**\Google.ProtocolBuffersLite.???" target="lib\" />
+    <file src="..\build_output\Release\**\Google.ProtocolBuffersLite.Serialization.???" target="lib\" />
+    <!-- Tools -->
+    <file src="..\build_output\tools\**\*" target="tools\" />
+    <file src="..\build_output\protos\**\*" target="tools\" />
+    <!-- Content -->
+    <file src="..\build_output\CHANGES.txt" target="tools\"/>
+    <file src="..\build_output\license.txt" target="tools\"/>
+    <file src="..\build_output\tools\protoc-license.txt" target="tools\"/>
+    <!-- Source -->
+    <file src="..\src\ProtocolBuffers\**\*.cs" target="src\ProtocolBuffers\"/>
+    <file src="..\src\ProtocolBuffers.Serialization\**\*.cs" target="src\ProtocolBuffers.Serialization\"/>
+  </files>
+</package>
diff --git a/csharp/build/RunBenchmarks.bat b/csharp/build/RunBenchmarks.bat
new file mode 100644
index 0000000..d0e6501
--- /dev/null
+++ b/csharp/build/RunBenchmarks.bat
@@ -0,0 +1,2 @@
+@echo off
+CMD.exe /Q /C "CD %~dp0 && %WINDIR%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /nologo build.csproj /toolsversion:4.0 /t:RunBenchmarks %1 %2 %3 %4
diff --git a/csharp/build/build.bat b/csharp/build/build.bat
new file mode 100644
index 0000000..bd7bd2a
--- /dev/null
+++ b/csharp/build/build.bat
@@ -0,0 +1,20 @@
+@echo off
+SET BUILD_VERSION=%~1
+SET BUILD_TARGET=%~2
+SET BUILD_CONFIG=%~3
+
+IF NOT "%BUILD_VERSION%"=="" GOTO RUN
+ECHO.
+ECHO Usage: build.bat platform [target] [config] [msbuild arguments]
+ECHO.
+ECHO - platform:  CF20, CF35, NET20, NET35, NET40, PL40, SL20, SL30, or SL40
+ECHO - [target]:  Rebuild, Clean, Build, Test, or Publish
+ECHO - [config]:  Debug or Release
+ECHO.
+EXIT /B 1
+
+:RUN
+IF "%BUILD_TARGET%"=="" SET BUILD_TARGET=Rebuild
+IF "%BUILD_CONFIG%"=="" SET BUILD_CONFIG=Debug
+
+CMD.exe /Q /C "CD %~dp0 && %WINDIR%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /nologo target.csproj /toolsversion:4.0 %4 %5 %6 "/t:%BUILD_TARGET%" "/p:Configuration=%BUILD_CONFIG%;TargetVersion=%BUILD_VERSION%"
diff --git a/csharp/build/build.csproj b/csharp/build/build.csproj
new file mode 100644
index 0000000..e78b2ef
--- /dev/null
+++ b/csharp/build/build.csproj
@@ -0,0 +1,241 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+  <!-- build targets -->
+  <Target Name="Clean" DependsOnTargets="_CleanAll" />
+  <Target Name="BuildTools" DependsOnTargets="_BuildTools" />
+  <Target Name="GenerateProjects" DependsOnTargets="_GenerateProjects" />
+  <Target Name="GenerateSource" DependsOnTargets="_GenerateSource;_CopyGeneratedSource" />
+  <Target Name="RebuildSource" DependsOnTargets="Clean;BuildTools;GenerateSource" />
+  <Target Name="Build" DependsOnTargets="GenerateProjects;BuildTools;GenerateSource;_CompileAll" />
+  <Target Name="Rebuild" DependsOnTargets="Clean;Build" />
+  <Target Name="GeneratePackage" DependsOnTargets="_PackageAll;_GeneratePackage" />
+  <Target Name="FullBuild" DependsOnTargets="Rebuild;GeneratePackage" />
+  <!-- misc targets -->
+  <Target Name="RunBenchmarks" DependsOnTargets="_CleanAll;_BuildTools;_RunBenchmarks" />
+
+  <PropertyGroup>
+    <ProjectName>Protocol Buffers</ProjectName>
+    <Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">Any CPU</Platform>
+    
+    <!--Directory Paths-->
+    <ProjectDirectory>$(MSBuildProjectDirectory)\..</ProjectDirectory>
+    <SourceDirectory>$(ProjectDirectory)\src</SourceDirectory>
+    <LibDirectory>$(ProjectDirectory)\lib</LibDirectory>
+    <ProtosDirectory>$(ProjectDirectory)\protos</ProtosDirectory>
+
+    <SourceTempDirectory>$(ProjectDirectory)\build_temp\GeneratedSource</SourceTempDirectory>
+    <BuildTempDirectory>$(ProjectDirectory)\build_temp</BuildTempDirectory>
+    <BuildOutputDirectory>$(ProjectDirectory)\build_output</BuildOutputDirectory>
+    <BuildOutputPackage>$(BuildOutputDirectory)</BuildOutputPackage>
+
+    <BenchmarkArgs>/v2 /fast /formats</BenchmarkArgs>
+    <BenchmarkOutputFile>$(BuildTempDirectory)\..\BenchmarkResults.txt</BenchmarkOutputFile>
+    <BenchmarkProtosDirectory>$(ProjectDirectory)\benchmarks</BenchmarkProtosDirectory>
+
+    <PackageName Condition=" '$(PackageName)' == '' ">$(Configuration)</PackageName>
+    
+    <!--Tool Paths-->
+    <ProtocExePath>$(BuildOutputDirectory)\tools\protoc.exe</ProtocExePath>
+    <ProtogenExePath>$(BuildOutputDirectory)\tools\protogen.exe</ProtogenExePath>
+    <NUnitExePath>$(LibDirectory)\NUnit\tools\nunit-console.exe</NUnitExePath>
+    <CsProjectProjector>$(LibDirectory)\CsProjectProjector\CsProjectProjector.exe</CsProjectProjector>
+    <ZipExePath>$(LibDirectory)\7-Zip 9.20\7za.exe</ZipExePath>
+  
+</PropertyGroup>
+
+  <Import Project="Common.targets"/>
+
+  <!-- Proto Files -->
+  <ItemGroup>
+    <Protos Include="$(ProtosDirectory)\extest\unittest_issues.proto" />
+    <Protos Include="$(ProtosDirectory)\extest\unittest_extras.proto" />
+    <Protos Include="$(ProtosDirectory)\extest\unittest_extras_full.proto" />
+    <Protos Include="$(ProtosDirectory)\extest\unittest_extras_lite.proto" />
+    <Protos Include="$(ProtosDirectory)\extest\unittest_extras_xmltest.proto" />
+    <Protos Include="$(ProtosDirectory)\extest\unittest_generic_services.proto" />
+    <Protos Include="$(ProtosDirectory)\extest\unittest_rpc_interop.proto" />
+    <Protos Include="$(ProtosDirectory)\extest\unittest_rpc_interop_lite.proto" />
+    <Protos Include="$(ProtosDirectory)\google\protobuf\descriptor.proto" />
+    <Protos Include="$(ProtosDirectory)\google\protobuf\csharp_options.proto" />
+    <Protos Include="$(ProtosDirectory)\google\protobuf\unittest.proto" />
+    <Protos Include="$(ProtosDirectory)\google\protobuf\unittest_csharp_options.proto" />
+    <Protos Include="$(ProtosDirectory)\google\protobuf\unittest_custom_options.proto" />
+    <Protos Include="$(ProtosDirectory)\google\protobuf\unittest_embed_optimize_for.proto" />
+    <Protos Include="$(ProtosDirectory)\google\protobuf\unittest_empty.proto" />
+    <Protos Include="$(ProtosDirectory)\google\protobuf\unittest_import.proto" />
+    <Protos Include="$(ProtosDirectory)\google\protobuf\unittest_import_lite.proto" />
+    <Protos Include="$(ProtosDirectory)\google\protobuf\unittest_lite.proto" />
+    <Protos Include="$(ProtosDirectory)\google\protobuf\unittest_lite_imports_nonlite.proto" />
+    <Protos Include="$(ProtosDirectory)\google\protobuf\unittest_mset.proto" />
+    <Protos Include="$(ProtosDirectory)\google\protobuf\unittest_no_generic_services.proto" />
+    <Protos Include="$(ProtosDirectory)\google\protobuf\unittest_optimize_for.proto" />
+    <Protos Include="$(ProtosDirectory)\google\test\google_size.proto" />
+    <Protos Include="$(ProtosDirectory)\google\test\google_speed.proto" />
+    <Protos Include="$(ProtosDirectory)\tutorial\addressbook.proto" />
+    <!-- for benchmark -->
+    <Protos Include="$(ProtosDirectory)\benchmarks\google_size.proto" />
+    <Protos Include="$(ProtosDirectory)\benchmarks\google_speed.proto" />
+  </ItemGroup>
+  <!-- Generated Source -->
+  <ItemGroup>
+    <!-- Main protos -->
+    <GeneratedSource Include="$(SourceTempDirectory)\CSharpOptions.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtocolBuffers\DescriptorProtos</TargetDirectory>
+    </GeneratedSource>
+    <GeneratedSource Include="$(SourceTempDirectory)\DescriptorProtoFile.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtocolBuffers\DescriptorProtos</TargetDirectory>
+    </GeneratedSource>
+        
+    <!-- Address book sample -->
+    <GeneratedSource Include="$(SourceTempDirectory)\AddressBookProtos.cs">
+      <TargetDirectory>$(SourceDirectory)\AddressBook</TargetDirectory>
+    </GeneratedSource>
+    <!-- Unit test -->
+    <GeneratedSource Include="$(SourceTempDirectory)\UnitTestExtrasProtoFile.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
+    </GeneratedSource>
+    <GeneratedSource Include="$(SourceTempDirectory)\UnitTestExtrasIssuesProtoFile.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
+    </GeneratedSource>
+    <GeneratedSource Include="$(SourceTempDirectory)\UnitTestXmlSerializerTestProtoFile.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
+    </GeneratedSource>
+    <GeneratedSource Include="$(SourceTempDirectory)\UnitTestCSharpOptionsProtoFile.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
+    </GeneratedSource>
+    <GeneratedSource Include="$(SourceTempDirectory)\UnitTestCustomOptionsProtoFile.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
+    </GeneratedSource>
+    <GeneratedSource Include="$(SourceTempDirectory)\UnitTestEmbedOptimizeForProtoFile.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
+    </GeneratedSource>
+    <GeneratedSource Include="$(SourceTempDirectory)\UnitTestEmptyProtoFile.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
+    </GeneratedSource>
+    <GeneratedSource Include="$(SourceTempDirectory)\UnitTestImportLiteProtoFile.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
+    </GeneratedSource>  
+    <GeneratedSource Include="$(SourceTempDirectory)\UnitTestImportProtoFile.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
+    </GeneratedSource>
+    <GeneratedSource Include="$(SourceTempDirectory)\UnitTestMessageSetProtoFile.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
+    </GeneratedSource>
+    <GeneratedSource Include="$(SourceTempDirectory)\UnitTestNoGenericServicesProtoFile.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
+    </GeneratedSource>
+    <GeneratedSource Include="$(SourceTempDirectory)\UnitTestOptimizeForProtoFile.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
+    </GeneratedSource>
+    <GeneratedSource Include="$(SourceTempDirectory)\UnitTestProtoFile.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
+    </GeneratedSource>
+    <GeneratedSource Include="$(SourceTempDirectory)\UnitTestRpcInterop.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
+    </GeneratedSource>
+    <GeneratedSource Include="$(SourceTempDirectory)\UnitTestRpcInteropLite.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory>
+    </GeneratedSource>
+    <GeneratedSource Include="$(SourceTempDirectory)\UnitTestGenericServices.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
+    </GeneratedSource>
+    <!-- Lite unit test -->
+    <GeneratedSource Include="$(SourceTempDirectory)\UnitTestExtrasFullProtoFile.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory>
+    </GeneratedSource>
+    <GeneratedSource Include="$(SourceTempDirectory)\UnitTestExtrasLiteProtoFile.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory>
+    </GeneratedSource>
+    <GeneratedSource Include="$(SourceTempDirectory)\UnitTestImportLiteProtoFile.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory>
+    </GeneratedSource>
+    <GeneratedSource Include="$(SourceTempDirectory)\UnitTestImportProtoFile.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory>
+    </GeneratedSource>
+    <GeneratedSource Include="$(SourceTempDirectory)\UnitTestLiteImportNonLiteProtoFile.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory>
+    </GeneratedSource>
+    <GeneratedSource Include="$(SourceTempDirectory)\UnitTestLiteProtoFile.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory>
+    </GeneratedSource>
+    <GeneratedSource Include="$(SourceTempDirectory)\UnitTestProtoFile.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory>
+    </GeneratedSource>
+    <GeneratedSource Include="$(SourceTempDirectory)\UnitTestGoogleSizeProtoFile.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
+    </GeneratedSource>
+    <GeneratedSource Include="$(SourceTempDirectory)\UnitTestGoogleSpeedProtoFile.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
+    </GeneratedSource>
+    <GeneratedSource Include="$(SourceTempDirectory)\GoogleSizeProtoFile.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtoBench\TestProtos</TargetDirectory>
+    </GeneratedSource>
+    <GeneratedSource Include="$(SourceTempDirectory)\GoogleSpeedProtoFile.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtoBench\TestProtos</TargetDirectory>
+    </GeneratedSource>
+    <GeneratedSource Include="$(SourceTempDirectory)\UnitTestImportProtoFile.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtoBench\TestProtos</TargetDirectory>
+    </GeneratedSource>
+    <GeneratedSource Include="$(SourceTempDirectory)\UnitTestProtoFile.cs">
+      <TargetDirectory>$(SourceDirectory)\ProtoBench\TestProtos</TargetDirectory>
+    </GeneratedSource>
+  </ItemGroup>
+  <!-- Package Items -->
+  <ItemGroup>
+    <StaticPackageItem Include="$(ProjectDirectory)\CHANGES.txt" />
+    <StaticPackageItem Include="$(ProjectDirectory)\license.txt" />
+    <StaticPackageItem Include="$(ProjectDirectory)\protos\google\protobuf\descriptor.proto">
+      <TargetDirectory>\protos\google\protobuf</TargetDirectory>
+    </StaticPackageItem>
+    <StaticPackageItem Include="$(ProjectDirectory)\protos\google\protobuf\compiler\plugin.proto">
+      <TargetDirectory>\protos\google\protobuf\compiler</TargetDirectory>
+    </StaticPackageItem>
+    <StaticPackageItem Include="$(ProjectDirectory)\protos\google\protobuf\csharp_options.proto">
+      <TargetDirectory>\protos\google\protobuf</TargetDirectory>
+    </StaticPackageItem>
+    <StaticPackageItem Include="$(ProjectDirectory)\protos\tutorial\addressbook.proto">
+      <TargetDirectory>\protos\tutorial</TargetDirectory>
+    </StaticPackageItem>
+  </ItemGroup>
+  <!-- Tools -->
+  <ItemGroup>
+    <ToolsTestContainer Include="$(SourceDirectory)\ProtoGen.Test\bin\NET35\Release\Google.ProtocolBuffers.ProtoGen.Test.dll" />
+
+    <ToolsOutputItem Include="$(SourceDirectory)\ProtocolBuffers\bin\NET35\Release\Google.ProtocolBuffers.dll" />
+    <ToolsOutputItem Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin\NET35\Release\Google.ProtocolBuffers.Serialization.dll" />
+    <ToolsOutputItem Include="$(SourceDirectory)\ProtoGen\bin\NET35\Release\ProtoGen.exe" />
+    <ToolsOutputItem Include="$(SourceDirectory)\ProtoGen\bin\NET35\Release\ProtoGen.exe.config" />
+    <ToolsOutputItem Include="$(SourceDirectory)\ProtoMunge\bin\NET35\Release\ProtoMunge.exe" />
+    <ToolsOutputItem Include="$(SourceDirectory)\ProtoDump\bin\NET35\Release\ProtoDump.exe" />
+    <ToolsOutputItem Include="$(SourceDirectory)\ProtoBench\bin\NET35\Release\ProtoBench.exe" />
+    <ToolsOutputItem Include="$(LibDirectory)\protoc.exe" />
+    <ToolsOutputItem Include="$(LibDirectory)\protoc-license.txt" />
+  </ItemGroup>
+  <!-- Temporary Directories -->
+  <ItemGroup>
+    <TempBuildFolder Include="$(BuildTempDirectory)" />
+    <TempBuildFolder Include="$(BuildOutputDirectory)" />
+    <TempBuildFolder Include="$(SourceDirectory)\AddressBook\obj" />
+    <TempBuildFolder Include="$(SourceDirectory)\AddressBook\bin" />
+    <TempBuildFolder Include="$(SourceDirectory)\ProtoBench\obj" />
+    <TempBuildFolder Include="$(SourceDirectory)\ProtoBench\bin" />
+    <TempBuildFolder Include="$(SourceDirectory)\ProtocolBuffers\obj" />
+    <TempBuildFolder Include="$(SourceDirectory)\ProtocolBuffers\bin" />
+    <TempBuildFolder Include="$(SourceDirectory)\ProtocolBuffers.Serialization\obj" />
+    <TempBuildFolder Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin" />
+    <TempBuildFolder Include="$(SourceDirectory)\ProtocolBuffers.Test\obj" />
+    <TempBuildFolder Include="$(SourceDirectory)\ProtocolBuffers.Test\bin" />
+    <TempBuildFolder Include="$(SourceDirectory)\ProtocolBuffersLite.Test\obj" />
+    <TempBuildFolder Include="$(SourceDirectory)\ProtocolBuffersLite.Test\bin" />
+    <TempBuildFolder Include="$(SourceDirectory)\ProtoDump\obj" />
+    <TempBuildFolder Include="$(SourceDirectory)\ProtoDump\bin" />
+    <TempBuildFolder Include="$(SourceDirectory)\ProtoGen\obj" />
+    <TempBuildFolder Include="$(SourceDirectory)\ProtoGen\bin" />
+    <TempBuildFolder Include="$(SourceDirectory)\ProtoGen.Test\obj" />
+    <TempBuildFolder Include="$(SourceDirectory)\ProtoGen.Test\bin" />
+    <TempBuildFolder Include="$(SourceDirectory)\ProtoMunge\obj" />
+    <TempBuildFolder Include="$(SourceDirectory)\ProtoMunge\bin" />
+  </ItemGroup>
+</Project>
diff --git a/csharp/build/googlecode_upload.py b/csharp/build/googlecode_upload.py
new file mode 100644
index 0000000..d2d5f97
--- /dev/null
+++ b/csharp/build/googlecode_upload.py
@@ -0,0 +1,248 @@
+#!/usr/bin/env python
+#
+# Copyright 2006, 2007 Google Inc. All Rights Reserved.
+# Author: danderson@google.com (David Anderson)
+#
+# Script for uploading files to a Google Code project.
+#
+# This is intended to be both a useful script for people who want to
+# streamline project uploads and a reference implementation for
+# uploading files to Google Code projects.
+#
+# To upload a file to Google Code, you need to provide a path to the
+# file on your local machine, a small summary of what the file is, a
+# project name, and a valid account that is a member or owner of that
+# project.  You can optionally provide a list of labels that apply to
+# the file.  The file will be uploaded under the same name that it has
+# in your local filesystem (that is, the "basename" or last path
+# component).  Run the script with '--help' to get the exact syntax
+# and available options.
+#
+# Note that the upload script requests that you enter your
+# googlecode.com password.  This is NOT your Gmail account password!
+# This is the password you use on googlecode.com for committing to
+# Subversion and uploading files.  You can find your password by going
+# to http://code.google.com/hosting/settings when logged in with your
+# Gmail account. If you have already committed to your project's
+# Subversion repository, the script will automatically retrieve your
+# credentials from there (unless disabled, see the output of '--help'
+# for details).
+#
+# If you are looking at this script as a reference for implementing
+# your own Google Code file uploader, then you should take a look at
+# the upload() function, which is the meat of the uploader.  You
+# basically need to build a multipart/form-data POST request with the
+# right fields and send it to https://PROJECT.googlecode.com/files .
+# Authenticate the request using HTTP Basic authentication, as is
+# shown below.
+#
+# Licensed under the terms of the Apache Software License 2.0:
+#  http://www.apache.org/licenses/LICENSE-2.0
+#
+# Questions, comments, feature requests and patches are most welcome.
+# Please direct all of these to the Google Code users group:
+#  http://groups.google.com/group/google-code-hosting
+
+"""Google Code file uploader script.
+"""
+
+__author__ = 'danderson@google.com (David Anderson)'
+
+import httplib
+import os.path
+import optparse
+import getpass
+import base64
+import sys
+
+
+def upload(file, project_name, user_name, password, summary, labels=None):
+  """Upload a file to a Google Code project's file server.
+
+  Args:
+    file: The local path to the file.
+    project_name: The name of your project on Google Code.
+    user_name: Your Google account name.
+    password: The googlecode.com password for your account.
+              Note that this is NOT your global Google Account password!
+    summary: A small description for the file.
+    labels: an optional list of label strings with which to tag the file.
+
+  Returns: a tuple:
+    http_status: 201 if the upload succeeded, something else if an
+                 error occured.
+    http_reason: The human-readable string associated with http_status
+    file_url: If the upload succeeded, the URL of the file on Google
+              Code, None otherwise.
+  """
+  # The login is the user part of user@gmail.com. If the login provided
+  # is in the full user@domain form, strip it down.
+  if user_name.endswith('@gmail.com'):
+    user_name = user_name[:user_name.index('@gmail.com')]
+
+  form_fields = [('summary', summary)]
+  if labels is not None:
+    form_fields.extend([('label', l.strip()) for l in labels])
+
+  content_type, body = encode_upload_request(form_fields, file)
+
+  upload_host = '%s.googlecode.com' % project_name
+  upload_uri = '/files'
+  auth_token = base64.b64encode('%s:%s'% (user_name, password))
+  headers = {
+    'Authorization': 'Basic %s' % auth_token,
+    'User-Agent': 'Googlecode.com uploader v0.9.4',
+    'Content-Type': content_type,
+    }
+
+  server = httplib.HTTPSConnection(upload_host)
+  server.request('POST', upload_uri, body, headers)
+  resp = server.getresponse()
+  server.close()
+
+  if resp.status == 201:
+    location = resp.getheader('Location', None)
+  else:
+    location = None
+  return resp.status, resp.reason, location
+
+
+def encode_upload_request(fields, file_path):
+  """Encode the given fields and file into a multipart form body.
+
+  fields is a sequence of (name, value) pairs. file is the path of
+  the file to upload. The file will be uploaded to Google Code with
+  the same file name.
+
+  Returns: (content_type, body) ready for httplib.HTTP instance
+  """
+  BOUNDARY = '----------Googlecode_boundary_reindeer_flotilla'
+  CRLF = '\r\n'
+
+  body = []
+
+  # Add the metadata about the upload first
+  for key, value in fields:
+    body.extend(
+      ['--' + BOUNDARY,
+       'Content-Disposition: form-data; name="%s"' % key,
+       '',
+       value,
+       ])
+
+  # Now add the file itself
+  file_name = os.path.basename(file_path)
+  f = open(file_path, 'rb')
+  file_content = f.read()
+  f.close()
+
+  body.extend(
+    ['--' + BOUNDARY,
+     'Content-Disposition: form-data; name="filename"; filename="%s"'
+     % file_name,
+     # The upload server determines the mime-type, no need to set it.
+     'Content-Type: application/octet-stream',
+     '',
+     file_content,
+     ])
+
+  # Finalize the form body
+  body.extend(['--' + BOUNDARY + '--', ''])
+
+  return 'multipart/form-data; boundary=%s' % BOUNDARY, CRLF.join(body)
+
+
+def upload_find_auth(file_path, project_name, summary, labels=None,
+                     user_name=None, password=None, tries=3):
+  """Find credentials and upload a file to a Google Code project's file server.
+
+  file_path, project_name, summary, and labels are passed as-is to upload.
+
+  Args:
+    file_path: The local path to the file.
+    project_name: The name of your project on Google Code.
+    summary: A small description for the file.
+    labels: an optional list of label strings with which to tag the file.
+    config_dir: Path to Subversion configuration directory, 'none', or None.
+    user_name: Your Google account name.
+    tries: How many attempts to make.
+  """
+
+  while tries > 0:
+    if user_name is None:
+      # Read username if not specified or loaded from svn config, or on
+      # subsequent tries.
+      sys.stdout.write('Please enter your googlecode.com username: ')
+      sys.stdout.flush()
+      user_name = sys.stdin.readline().rstrip()
+    if password is None:
+      # Read password if not loaded from svn config, or on subsequent tries.
+      print 'Please enter your googlecode.com password.'
+      print '** Note that this is NOT your Gmail account password! **'
+      print 'It is the password you use to access Subversion repositories,'
+      print 'and can be found here: http://code.google.com/hosting/settings'
+      password = getpass.getpass()
+
+    status, reason, url = upload(file_path, project_name, user_name, password,
+                                 summary, labels)
+    # Returns 403 Forbidden instead of 401 Unauthorized for bad
+    # credentials as of 2007-07-17.
+    if status in [httplib.FORBIDDEN, httplib.UNAUTHORIZED]:
+      # Rest for another try.
+      user_name = password = None
+      tries = tries - 1
+    else:
+      # We're done.
+      break
+
+  return status, reason, url
+
+
+def main():
+  parser = optparse.OptionParser(usage='googlecode-upload.py -s SUMMARY '
+                                 '-p PROJECT [options] FILE')
+  parser.add_option('-s', '--summary', dest='summary',
+                    help='Short description of the file')
+  parser.add_option('-p', '--project', dest='project',
+                    help='Google Code project name')
+  parser.add_option('-u', '--user', dest='user',
+                    help='Your Google Code username')
+  parser.add_option('-w', '--password', dest='password',
+                    help='Your Google Code password')
+  parser.add_option('-l', '--labels', dest='labels',
+                    help='An optional list of comma-separated labels to attach '
+                    'to the file')
+
+  options, args = parser.parse_args()
+
+  if not options.summary:
+    parser.error('File summary is missing.')
+  elif not options.project:
+    parser.error('Project name is missing.')
+  elif len(args) < 1:
+    parser.error('File to upload not provided.')
+  elif len(args) > 1:
+    parser.error('Only one file may be specified.')
+
+  file_path = args[0]
+
+  if options.labels:
+    labels = options.labels.split(',')
+  else:
+    labels = None
+
+  status, reason, url = upload_find_auth(file_path, options.project,
+                                         options.summary, labels,
+                                         options.user, options.password)
+  if url:
+    print 'The file was uploaded successfully.'
+    print 'URL: %s' % url
+    return 0
+  else:
+    print 'An error occurred. Your file was not uploaded.'
+    print 'Google Code upload server said: %s (%s)' % (reason, status)
+    return 1
+
+
+if __name__ == '__main__':
+  sys.exit(main())
diff --git a/csharp/build/nuspec.xsd b/csharp/build/nuspec.xsd
new file mode 100644
index 0000000..db744d1
--- /dev/null
+++ b/csharp/build/nuspec.xsd
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- original location: https://hg01.codeplex.com/nuget/raw-file/tip/src/Core/Authoring/nuspec.xsd -->
+<xs:schema id="nuspec" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+    <xs:element name="package">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="metadata" maxOccurs="1" minOccurs="1">
+                    <xs:complexType>
+                        <xs:all>
+                            <xs:element name="id" maxOccurs="1" minOccurs="1" type="xs:string" />
+                            <xs:element name="version" maxOccurs="1" minOccurs="1" type="xs:string" />
+                            <xs:element name="title" maxOccurs="1" minOccurs="0" type="xs:string" />
+                            <xs:element name="authors" maxOccurs="1" minOccurs="1" type="xs:string" />
+                            <xs:element name="owners" maxOccurs="1" minOccurs="0" type="xs:string" />
+                            <xs:element name="licenseUrl" maxOccurs="1" minOccurs="0" type="xs:anyURI" />
+                            <xs:element name="projectUrl" maxOccurs="1" minOccurs="0" type="xs:anyURI" />
+                            <xs:element name="iconUrl" maxOccurs="1" minOccurs="0" type="xs:anyURI" />
+                            <xs:element name="requireLicenseAcceptance" maxOccurs="1" minOccurs="0" type="xs:boolean" />
+                            <xs:element name="description" maxOccurs="1" minOccurs="1" type="xs:string" />
+                            <xs:element name="summary" maxOccurs="1" minOccurs="0" type="xs:string" />
+                            <xs:element name="releaseNotes" maxOccurs="1" minOccurs="0" type="xs:string" />
+                            <xs:element name="copyright" maxOccurs="1" minOccurs="0" type="xs:string" />
+                            <xs:element name="language" maxOccurs="1" minOccurs="0" type="xs:string" default="en-US" />
+                            <xs:element name="tags" maxOccurs="1" minOccurs="0" type="xs:string" />
+                            <xs:element name="dependencies" maxOccurs="1" minOccurs="0">
+                                <xs:complexType>
+                                    <xs:sequence>
+                                        <xs:element name="dependency" minOccurs="0" maxOccurs="unbounded">
+                                            <xs:complexType>
+                                                <xs:attribute name="id" type="xs:string" use="required" />
+                                                <xs:attribute name="version" type="xs:string" use="optional" />
+                                            </xs:complexType>
+                                        </xs:element>
+                                    </xs:sequence>
+                                </xs:complexType>
+                            </xs:element>
+                            <xs:element name="frameworkAssemblies" maxOccurs="1" minOccurs="0">
+                                <xs:complexType>
+                                    <xs:sequence>
+                                        <xs:element name="frameworkAssembly" minOccurs="0" maxOccurs="unbounded">
+                                            <xs:complexType>
+                                                <xs:attribute name="assemblyName" type="xs:string" use="required" />
+                                                <xs:attribute name="targetFramework" type="xs:string" use="optional" />
+                                            </xs:complexType>
+                                        </xs:element>
+                                    </xs:sequence>
+                                </xs:complexType>
+                            </xs:element>
+                            <xs:element name="references" maxOccurs="1" minOccurs="0">
+                                <xs:complexType>
+                                    <xs:sequence>
+                                        <xs:element name="reference" minOccurs="0" maxOccurs="unbounded">
+                                            <xs:complexType>
+                                                <xs:attribute name="file" type="xs:string" use="required" />
+                                            </xs:complexType>
+                                        </xs:element>
+                                    </xs:sequence>
+                                </xs:complexType>
+                            </xs:element>
+                        </xs:all>
+                    </xs:complexType>
+                </xs:element>
+                <xs:element name="files" minOccurs="0" maxOccurs="1" nillable="true">
+                    <xs:complexType>
+                        <xs:sequence>
+                            <xs:element name="file" minOccurs="0" maxOccurs="unbounded">
+                                <xs:complexType>
+                                    <xs:attribute name="src" use="required" type="xs:string" />
+                                    <xs:attribute name="target" use="optional" type="xs:string" />
+                                    <xs:attribute name="exclude" use="optional" type="xs:string" />
+                                </xs:complexType>
+                            </xs:element>
+                        </xs:sequence>
+                    </xs:complexType>
+                </xs:element>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+</xs:schema>
diff --git a/csharp/build/publish.csproj b/csharp/build/publish.csproj
new file mode 100644
index 0000000..bbe71df
--- /dev/null
+++ b/csharp/build/publish.csproj
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Publish" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+  <!-- build targets -->
+  <Target Name="Clean" DependsOnTargets="_Clean" />
+  <Target Name="Build" DependsOnTargets="_Clean;_Prerequisites;_StampVersion;_GenerateSource;_Build" />
+  <Target Name="Label" DependsOnTargets="_HgLabel" />
+  <Target Name="Package" DependsOnTargets="_HgPack;_NugetPack" />
+  <Target Name="Prepare" DependsOnTargets="Clean;Build;Label;Package" />
+  <Target Name="PushAll" DependsOnTargets="_HgPush;_NugetPush" />
+  <Target Name="Publish" DependsOnTargets="Prepare;PushAll" />
+
+  <PropertyGroup>
+    <ProjectName>Protocol Buffers</ProjectName>
+    <VersionMajor>2</VersionMajor>
+    <VersionMinor>4</VersionMinor>
+    <VersionBuild>1</VersionBuild>
+    <VersionRevision></VersionRevision>
+    <VersionLabel></VersionLabel>
+
+    <PackagePrefix>protobuf-csharp-port-</PackagePrefix>
+    <PublishDebug>false</PublishDebug>
+    
+    <GoogleUsername></GoogleUsername>
+    <GooglePassword></GooglePassword>
+    
+    <!--Directory Paths-->
+    <ProjectDirectory>$(MSBuildProjectDirectory)\..</ProjectDirectory>
+    <BuildTempDirectory>$(ProjectDirectory)\build_temp</BuildTempDirectory>
+    <BuildOutputDirectory>$(ProjectDirectory)\build_output</BuildOutputDirectory>
+    <SourceDirectory>$(ProjectDirectory)\src</SourceDirectory>
+    <LibDirectory>$(ProjectDirectory)\lib</LibDirectory>
+    
+    <!-- File Paths -->
+    <SigningKey>$(ProjectDirectory)\release-key\Google.ProtocolBuffers.snk</SigningKey>
+    
+    <!--Tool Paths-->
+    <HgTool>hg.exe</HgTool>
+    <Python>C:\Python25\python.exe</Python>
+    <SnTool>$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A@InstallationFolder)Bin\sn.exe</SnTool>
+    <StampVer>$(LibDirectory)\StampVersion.exe</StampVer>
+    <ZipExePath>$(LibDirectory)\7-Zip 9.20\7za.exe</ZipExePath>
+    <NuGet>$(LibDirectory)\NuGet.exe</NuGet>
+    <ProtogenExePath>$(BuildOutputDirectory)\tools\protogen.exe</ProtogenExePath>
+  </PropertyGroup>
+  
+  <!-- Import user settings -->
+  <Import Project="$(MSBuildProjectFullPath).user" Condition="Exists('$(MSBuildProjectFullPath).user')" />
+
+  <!-- Files -->
+  <ItemGroup>
+  </ItemGroup>
+  
+  <!-- Tasks -->
+
+  <Target Name="_Prerequisites" DependsOnTargets="_CheckEnvironment;_ReadVersion" />
+  
+  <Target Name="_Clean">
+    <MSBuild Properties="Configuration=Debug;" Targets="Clean" Projects="$(MSBuildProjectDirectory)\target.csproj" />
+    <MSBuild Properties="Configuration=Release;" Targets="Clean" Projects="$(MSBuildProjectDirectory)\target.csproj" />
+    <MakeDir Directories="$(BuildTempDirectory)" />
+    <MakeDir Directories="$(BuildOutputDirectory)" />
+  </Target>
+
+  <Target Name="_WriteUserConfig">
+    <ItemGroup>
+      <Lines Include="&lt;Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>" />
+      <Lines Include="  &lt;PropertyGroup>"/>
+      <Lines Include="    &lt;GoogleUsername> (Enter your google-code user/password here) &lt;/GoogleUsername>"/>
+      <Lines Include="    &lt;GooglePassword>&lt;/GooglePassword>"/>
+      <Lines Include="  &lt;/PropertyGroup>" />
+      <Lines Include="&lt;/Project>" />
+    </ItemGroup>
+    <WriteLinesToFile File="$(MSBuildProjectFullPath).user" Lines="@(Lines)" Overwrite="true" Condition="!Exists('$(MSBuildProjectFullPath).user')" />
+    <Exec Command="Notepad.exe $(MSBuildProjectFullPath).user" />
+  </Target>
+  
+  <Target Name="_CheckEnvironment">
+    <!-- Require google credentials -->
+    <CallTarget Targets="_WriteUserConfig" Condition=" '$(GooglePassword)' == '' " />
+    <Error Text="Restart after you verify your credentials in $(MSBuildProjectFullPath).user" Condition=" '$(GooglePassword)' == '' " />
+    <!-- Require Win7.0A SDK to verify strong-name -->
+    <Error Text="Unable to locate Win7SDK Tools: $(SnTool)" Condition="!Exists($(SnTool))" />
+    <!-- Require Python 2.5 installed -->
+    <!-- Error Text="Unable to locate Python 2.5: $(Python)" Condition="!Exists($(Python))" / -->
+    <!-- Require production signing key -->
+    <Exec Command="$(HgTool) clone https://bitbucket.org/rknapp/protobuf-csharp-port-keyfile $(ProjectDirectory)\release-key" Condition="!Exists('$(SigningKey)')" />
+    <Error Text="Unable to locate release signing key: $(SigningKey)" Condition="!Exists($(SigningKey))" />
+  </Target>
+
+  <Target Name="_ReadVersion" Condition=" '$(VersionLabel)' == '' ">
+    <Exec Command="$(HgTool) log -l 1 --template &quot;{rev}&quot; > &quot;$(BuildTempDirectory)\revision.txt&quot;"></Exec>
+    <ReadLinesFromFile File="$(BuildTempDirectory)\revision.txt">
+      <Output TaskParameter="Lines" PropertyName="VersionRevision"/>
+    </ReadLinesFromFile>
+
+    <PropertyGroup>
+      <VersionLabel>$(VersionMajor).$(VersionMinor).$(VersionBuild).$(VersionRevision)</VersionLabel>
+    </PropertyGroup>
+    
+    <Message Text="Building version $(VersionLabel)" Importance="high" />
+  </Target>
+
+  <Target Name="_StampVersion" DependsOnTargets="_Prerequisites">
+    <Exec Command="$(StampVer) /major:$(VersionMajor) /minor:$(VersionMinor) /build:$(VersionBuild) /revision:$(VersionRevision)" WorkingDirectory="$(SourceDirectory)" />
+    <Exec Command="FIND &quot;$(VersionLabel)&quot; ProtocolBuffers\Properties\AssemblyInfo.cs" WorkingDirectory="$(SourceDirectory)" />
+  </Target>
+
+  <Target Name="_GenerateSource" DependsOnTargets="_Prerequisites">
+    <MSBuild Properties="Configuration=Release;AssemblyOriginatorKeyFile=$(SigningKey)" Targets="GenerateProjects;BuildTools;GenerateSource" Projects="$(MSBuildProjectDirectory)\build.csproj" />
+    <Exec Command="&quot;$(SnTool)&quot; -T &quot;$(ProtogenExePath)&quot; > signkey.txt" WorkingDirectory="$(BuildTempDirectory)" />
+    <!-- Make sure we are signing with the correct key -->
+    <Exec Command="FIND &quot;55f7125234beb589&quot; signkey.txt" WorkingDirectory="$(BuildTempDirectory)" />
+  </Target>
+  
+  <Target Name="_Build" DependsOnTargets="_Prerequisites">
+    <!-- Release Build -->
+    <MSBuild Properties="Configuration=Release;AssemblyOriginatorKeyFile=$(SigningKey)" Targets="_CompileAll" Projects="$(MSBuildProjectDirectory)\build.csproj" />
+    <MSBuild Properties="Configuration=Release;AssemblyOriginatorKeyFile=$(SigningKey);PackageName=$(PackagePrefix)$(VersionLabel)-release" Targets="GeneratePackage" Projects="$(MSBuildProjectDirectory)\build.csproj" />
+    <!-- Debug Build -->
+    <MSBuild Condition=" '$(PublishDebug)' == 'true' " Properties="Configuration=Debug;AssemblyOriginatorKeyFile=$(SigningKey)" Targets="_CompileAll" Projects="$(MSBuildProjectDirectory)\build.csproj" />
+    <MSBuild Condition=" '$(PublishDebug)' == 'true' " Properties="Configuration=Debug;AssemblyOriginatorKeyFile=$(SigningKey);PackageName=$(PackagePrefix)$(VersionLabel)-full" Targets="GeneratePackage" Projects="$(MSBuildProjectDirectory)\build.csproj" />
+  </Target>
+
+  <Target Name="_HgPack" DependsOnTargets="_Prerequisites">
+    <Exec Command="$(HgTool) archive $(BuildTempDirectory)\$(PackagePrefix)$(VersionLabel)-source.zip" WorkingDirectory="$(ProjectDirectory)" />
+  </Target>
+  
+  <Target Name="_HgLabel" DependsOnTargets="_Prerequisites">
+    <Exec Command="$(HgTool) commit -m &quot;version $(VersionLabel)&quot;" WorkingDirectory="$(ProjectDirectory)" />
+    <Exec Command="$(HgTool) tag $(VersionLabel)" WorkingDirectory="$(ProjectDirectory)" />
+  </Target>
+  
+  <Target Name="_HgPush" DependsOnTargets="_Prerequisites">
+    <Exec Command="$(HgTool) push" WorkingDirectory="$(ProjectDirectory)" />
+  </Target>
+
+  <Target Name="_PkgPush" DependsOnTargets="_Prerequisites">
+    <PropertyGroup>
+      <UploadPackage>$(Python) "$(MSBuildProjectDirectory)\googlecode_upload.py" --project protobuf-csharp-port --user "$(GoogleUsername)" --password "$(GooglePassword)"</UploadPackage>
+      
+      <SourcePackage>$(BuildTempDirectory)\$(PackagePrefix)$(VersionLabel)-source.zip</SourcePackage>
+      <ReleasePackageBin>$(BuildTempDirectory)\$(PackagePrefix)$(VersionLabel)-release-binaries.zip</ReleasePackageBin>
+      <ReleasePackageSyb>$(BuildTempDirectory)\$(PackagePrefix)$(VersionLabel)-release-symbols.zip</ReleasePackageSyb>
+      <DebugPackageBin>$(BuildTempDirectory)\$(PackagePrefix)$(VersionLabel)-full-binaries.zip</DebugPackageBin>
+      <DebugPackageSyb>$(BuildTempDirectory)\$(PackagePrefix)$(VersionLabel)-full-symbols.zip</DebugPackageSyb>
+    </PropertyGroup>
+
+    <Error Condition="!Exists('$(SourcePackage)')" Text="File not found: $(SourcePackage)" />
+    <Error Condition="!Exists('$(ReleasePackageBin)')" Text="File not found: $(ReleasePackageBin)" />
+    <Error Condition="!Exists('$(ReleasePackageSyb)')" Text="File not found: $(ReleasePackageSyb)" />
+    <Error Condition="'$(PublishDebug)' == 'true' And !Exists('$(DebugPackageBin)')" Text="File not found: $(DebugPackageBin)" />
+    <Error Condition="'$(PublishDebug)' == 'true' And !Exists('$(DebugPackageSyb)')" Text="File not found: $(DebugPackageSyb)" />
+
+    <Exec WorkingDirectory="$(ProjectDirectory)"
+          Command="$(UploadPackage) --labels Type-Source,Featured --summary &quot;Version $(VersionLabel) source&quot; $(SourcePackage)" />
+    
+    <Exec WorkingDirectory="$(ProjectDirectory)"
+          Command="$(UploadPackage) --labels Type-Executable,Featured --summary &quot;Version $(VersionLabel) release binaries only&quot; $(ReleasePackageBin)" />
+    <Exec WorkingDirectory="$(ProjectDirectory)"
+          Command="$(UploadPackage) --labels Type-Executable,Featured --summary &quot;Version $(VersionLabel) release binaries and symbols&quot; $(ReleasePackageSyb)" />
+
+    <Exec WorkingDirectory="$(ProjectDirectory)" Condition=" '$(PublishDebug)' == 'true' "
+          Command="$(UploadPackage) --labels Type-Executable,Featured --summary &quot;Version $(VersionLabel) all binaries&quot; $(DebugPackageBin)" />
+    <Exec WorkingDirectory="$(ProjectDirectory)" Condition=" '$(PublishDebug)' == 'true' "
+          Command="$(UploadPackage) --labels Type-Executable,Featured --summary &quot;Version $(VersionLabel) all binaries and symbols&quot; $(DebugPackageSyb)" />
+  </Target>
+
+  <Target Name="_NugetPack" DependsOnTargets="_Prerequisites">
+    <Exec WorkingDirectory="$(MSBuildProjectDirectory)"
+      Command="$(NuGet) update -self" />
+    <Exec WorkingDirectory="$(MSBuildProjectDirectory)"
+      Command="$(NuGet) pack Google.ProtocolBuffers.nuspec -Symbols -Version $(VersionLabel) -NoPackageAnalysis -OutputDirectory $(BuildTempDirectory)" />
+    <Exec WorkingDirectory="$(MSBuildProjectDirectory)"
+      Command="$(NuGet) pack Google.ProtocolBuffersLite.nuspec -Symbols -Version $(VersionLabel) -NoPackageAnalysis -OutputDirectory $(BuildTempDirectory)" />
+  </Target>
+
+  <Target Name="_NugetPush" DependsOnTargets="_Prerequisites">
+    <Exec WorkingDirectory="$(BuildTempDirectory)" Command="$(NuGet) push Google.ProtocolBuffers.$(VersionLabel).nupkg" ContinueOnError="true" />
+    <Exec WorkingDirectory="$(BuildTempDirectory)" Command="$(NuGet) push Google.ProtocolBuffersLite.$(VersionLabel).nupkg" ContinueOnError="true" />
+
+    <Exec WorkingDirectory="$(BuildTempDirectory)" Command="$(NuGet) push Google.ProtocolBuffers.$(VersionLabel).symbols.nupkg" ContinueOnError="true" />
+    <Exec WorkingDirectory="$(BuildTempDirectory)" Command="$(NuGet) push Google.ProtocolBuffersLite.$(VersionLabel).symbols.nupkg" ContinueOnError="true" />
+  </Target>
+  
+</Project>
diff --git a/csharp/build/target.csproj b/csharp/build/target.csproj
new file mode 100644
index 0000000..09a9d50
--- /dev/null
+++ b/csharp/build/target.csproj
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+<!-- **********************************************************************************************
+High-level Targets
+*********************************************************************************************** -->
+
+  <Target Name="Clean" DependsOnTargets="_Clean" />
+  <Target Name="Build" DependsOnTargets="_Compile;_Test" />
+  <Target Name="Test" DependsOnTargets="_Test" />
+  <Target Name="Rebuild" DependsOnTargets="Clean;Build" />
+  <Target Name="Publish" DependsOnTargets="Clean;Build;_Publish" />
+
+  <!-- **********************************************************************************************
+Properties
+*********************************************************************************************** -->
+
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">Any CPU</Platform>
+    <TargetVersion Condition=" '$(TargetVersion)' == '' ">NET20</TargetVersion>
+    <BuildParams></BuildParams>
+
+    <!--Directory Paths-->
+    <ProjectDirectory>$(MSBuildProjectDirectory)\..</ProjectDirectory>
+    <SourceDirectory>$(ProjectDirectory)\src</SourceDirectory>
+    <LibDirectory>$(ProjectDirectory)\lib</LibDirectory>
+
+    <!--File Paths-->
+    <BuildTempDirectory>$(ProjectDirectory)\build_temp\$(Configuration)\$(TargetVersion)</BuildTempDirectory>
+    <BuildOutputDirectory>$(ProjectDirectory)\build_output\$(Configuration)\$(TargetVersion)</BuildOutputDirectory>
+    <SolutionFile>$(SourceDirectory)\ProtocolBuffersLibrary.$(TargetVersion).sln</SolutionFile>
+
+    <!--Tool Paths-->
+    <NUnitExePath>$(LibDirectory)\NUnit\tools\nunit-console.exe</NUnitExePath>
+    <StatLightExePath>$(LibDirectory)\StatLight\tools\StatLight.exe</StatLightExePath>
+  </PropertyGroup>
+
+<!-- **********************************************************************************************
+Target Versions
+*********************************************************************************************** -->
+
+  <PropertyGroup Condition=" '$(TargetVersion)' == 'NET20' ">
+    <BuildTools>3.5</BuildTools>
+    <TestFramework>NUNIT</TestFramework>
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(TargetVersion)' == 'NET35' ">
+    <BuildTools>3.5</BuildTools>
+    <TestFramework>NUNIT</TestFramework>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(TargetVersion)' == 'NET40' ">
+    <BuildTools>4.0</BuildTools>
+    <TestFramework>NUNIT</TestFramework>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(TargetVersion)' == 'CF20' ">
+    <BuildTools>3.5</BuildTools>
+    <TestFramework>NONE</TestFramework>
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(TargetVersion)' == 'CF35' ">
+    <BuildTools>3.5</BuildTools>
+    <TestFramework>NONE</TestFramework>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(TargetVersion)' == 'SL20' ">
+    <BuildTools>3.5</BuildTools>
+    <TestFramework>SILVERLIGHT</TestFramework>
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(TargetVersion)' == 'SL30' ">
+    <BuildTools>3.5</BuildTools>
+    <TestFramework>SILVERLIGHT</TestFramework>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(TargetVersion)' == 'SL40' ">
+    <BuildTools>4.0</BuildTools>
+    <TestFramework>SILVERLIGHT</TestFramework>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(TargetVersion)' == 'PL40' ">
+    <BuildTools>4.0</BuildTools>
+    <TestFramework>SILVERLIGHT</TestFramework>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <BuildOutputDirectory>$(ProjectDirectory)\build_output\$(Configuration)\portable-net40+sl4+sl5+wp7+wp8+win8</BuildOutputDirectory>
+  </PropertyGroup>
+
+<!-- **********************************************************************************************
+File Groups
+*********************************************************************************************** -->
+
+  <ItemGroup>
+    <WorkingDirectories Include="$(BuildTempDirectory)" />
+    <WorkingDirectories Include="$(BuildOutputDirectory)" />
+    
+    <TestContainer Include="$(SourceDirectory)\ProtocolBuffers.Test\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.Test.dll" />
+    <TestContainer Include="$(SourceDirectory)\ProtocolBuffersLite.Test\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.Test.dll" />
+    <TestContainer Include="$(SourceDirectory)\ProtocolBuffersLite.Test\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersMixedLite.Test.dll" />
+
+    <StatLightTestContainer Include="$(SourceDirectory)\ProtocolBuffers.Test\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.Test.xap" />
+    <StatLightTestContainer Include="$(SourceDirectory)\ProtocolBuffersLite.Test\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.Test.xap" />
+    <StatLightTestContainer Include="$(SourceDirectory)\ProtocolBuffersLite.Test\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersMixedLite.Test.xap" />
+
+    <PublishItem Include="$(SourceDirectory)\ProtocolBuffers\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.dll" />
+    <PublishItem Include="$(SourceDirectory)\ProtocolBuffers\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.pdb" />
+    <PublishItem Include="$(SourceDirectory)\ProtocolBuffers\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.xml" />
+    <PublishItem Include="$(SourceDirectory)\ProtocolBuffers\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.dll" />
+    <PublishItem Include="$(SourceDirectory)\ProtocolBuffers\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.pdb" />
+    <PublishItem Include="$(SourceDirectory)\ProtocolBuffers\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.xml" />
+    <PublishItem Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.Serialization.dll" />
+    <PublishItem Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.Serialization.pdb" />
+    <PublishItem Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.Serialization.xml" />
+    <PublishItem Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.Serialization.dll" />
+    <PublishItem Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.Serialization.pdb" />
+    <PublishItem Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.Serialization.xml" />
+  </ItemGroup>
+
+<!-- **********************************************************************************************
+Targets For Build
+*********************************************************************************************** -->
+
+  <Target Name="_Configured">
+    <Message Text="Building $(TargetVersion) for configuration $(Configuration), platform $(Platform)" Importance="normal" />
+    <Error Text="Unknown or missing value for TargetVersion=[value]" Condition=" '$(BuildTools)' == '' " />
+  </Target>
+  
+  <Target Name="_Clean" DependsOnTargets="_Configured">
+    <RemoveDir Directories="@(WorkingDirectories)" Condition="Exists(%(WorkingDirectories.Identity))" />
+    <MSBuild Targets="Clean" Projects="$(SolutionFile)" ToolsVersion="$(BuildTools)"
+             Properties="Configuration=$(Configuration);Platform=$(Platform);"
+             />
+  </Target>
+
+  <Target Name="_Compile" DependsOnTargets="_Configured">
+    <MSBuild Targets="Build" Projects="$(SolutionFile)" ToolsVersion="$(BuildTools)"
+             Properties="Configuration=$(Configuration);Platform=$(Platform);$(BuildParams)"
+             />
+  </Target>
+
+  <Target Name="_Publish" DependsOnTargets="_Configured">
+    <MakeDir Directories="$(BuildOutputDirectory)" />
+    <Copy SourceFiles="@(PublishItem)" DestinationFolder="$(BuildOutputDirectory)" />
+  </Target>
+
+<!-- **********************************************************************************************
+Targets For Test
+*********************************************************************************************** -->
+
+  <Target Name="_Test" DependsOnTargets="_Configured">
+    <MakeDir Directories="$(BuildTempDirectory)" />
+    <CallTarget Targets="_RunNunit" Condition=" '$(TestFramework)'=='NUNIT' " />
+    <CallTarget Targets="_RunStatLight" Condition=" '$(TestFramework)'=='SILVERLIGHT' " />
+  </Target>
+
+  <Target Name="_RunNunit">
+    <Copy SourceFiles="$(LibDirectory)\NUnit-config\nunit-console.$(TargetFrameworkVersion).config" DestinationFiles="$(NUnitExePath).config" />
+    <Exec Command="&quot;$(NUnitExePath)&quot; /nologo /noshadow &quot;%(TestContainer.Identity)&quot; /xml:&quot;$(BuildTempDirectory)\%(TestContainer.Filename).xml&quot;" />
+  </Target>
+
+  <Target Name="_RunStatLight">
+    <Exec
+      Command="&quot;$(StatLightExePath)&quot; -x %(StatLightTestContainer.Identity) --ReportOutputFileType=NUnit --ReportOutputFile=$(BuildTempDirectory)\%(StatLightTestContainer.Filename).xml" />
+  </Target>
+
+</Project>
diff --git a/csharp/csproj_templates/CF20.csproj b/csharp/csproj_templates/CF20.csproj
new file mode 100644
index 0000000..2968412
--- /dev/null
+++ b/csharp/csproj_templates/CF20.csproj
@@ -0,0 +1,41 @@
+﻿<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+  <PropertyGroup>
+    <EnvironmentFlavor>COMPACT_FRAMEWORK</EnvironmentFlavor>
+    <EnvironmentTemplate>CF20</EnvironmentTemplate>
+    <ProjectTypeGuids>{4D628B5B-2FBC-4AA6-8C16-197242AEB884};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+    <PlatformFamilyName>Smartphone</PlatformFamilyName>
+    <PlatformID>f27da329-3269-4191-98e0-c87d3d7f1db9</PlatformID>
+    <!--<OSVersion>5.2</OSVersion>-->
+    <!--<DeployDirSuffix>CF20</DeployDirSuffix>-->
+    <!--<NativePlatformName>Windows Mobile 6 Standard SDK</NativePlatformName>-->
+    <!--<FormFactorID></FormFactorID>-->
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <OutputPath>bin\CF20\Debug</OutputPath>
+    <IntermediateOutputPath>obj\CF20\Debug\</IntermediateOutputPath>
+    <DefineConstants>$(DefineConstants);NOSERIALIZABLE;NOFILEVERSION;NOEXTENSIONS</DefineConstants>
+    <NoConfig>true</NoConfig>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <OutputPath>bin\CF20\Release</OutputPath>
+    <IntermediateOutputPath>obj\CF20\Release\</IntermediateOutputPath>
+    <DefineConstants>$(DefineConstants);NOSERIALIZABLE;NOFILEVERSION;NOEXTENSIONS</DefineConstants>
+    <NoConfig>true</NoConfig>
+  </PropertyGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CompactFramework.CSharp.targets" />
+  <ProjectExtensions>
+    <VisualStudio>
+      <FlavorProperties GUID="{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}">
+        <HostingProcess disable="1" />
+      </FlavorProperties>
+    </VisualStudio>
+  </ProjectExtensions>
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file
diff --git a/csharp/csproj_templates/CF35.csproj b/csharp/csproj_templates/CF35.csproj
new file mode 100644
index 0000000..eae866f
--- /dev/null
+++ b/csharp/csproj_templates/CF35.csproj
@@ -0,0 +1,44 @@
+﻿<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+  <PropertyGroup>
+    <EnvironmentFlavor>COMPACT_FRAMEWORK</EnvironmentFlavor>
+    <EnvironmentTemplate>CF35</EnvironmentTemplate>
+    <ProjectTypeGuids>{4D628B5B-2FBC-4AA6-8C16-197242AEB884};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <PlatformFamilyName>Smartphone</PlatformFamilyName>
+    <PlatformID>f27da329-3269-4191-98e0-c87d3d7f1db9</PlatformID>
+    <!--<OSVersion>5.2</OSVersion>-->
+    <!--<DeployDirSuffix>CF35</DeployDirSuffix>-->
+    <!--<NativePlatformName>Windows Mobile 6 Standard SDK</NativePlatformName>-->
+    <!--<FormFactorID></FormFactorID>-->
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <OutputPath>bin\CF35\Debug</OutputPath>
+    <IntermediateOutputPath>obj\CF35\Debug\</IntermediateOutputPath>
+    <DefineConstants>$(DefineConstants);NOSERIALIZABLE;NOFILEVERSION</DefineConstants>
+    <NoConfig>true</NoConfig>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <OutputPath>bin\CF35\Release</OutputPath>
+    <IntermediateOutputPath>obj\CF35\Release\</IntermediateOutputPath>
+    <DefineConstants>$(DefineConstants);NOSERIALIZABLE;NOFILEVERSION</DefineConstants>
+    <NoConfig>true</NoConfig>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System.Core" />
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CompactFramework.CSharp.targets" />
+  <ProjectExtensions>
+    <VisualStudio>
+      <FlavorProperties GUID="{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}">
+        <HostingProcess disable="1" />
+      </FlavorProperties>
+    </VisualStudio>
+  </ProjectExtensions>
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file
diff --git a/csharp/csproj_templates/NET20.csproj b/csharp/csproj_templates/NET20.csproj
new file mode 100644
index 0000000..f9e9392
--- /dev/null
+++ b/csharp/csproj_templates/NET20.csproj
@@ -0,0 +1,17 @@
+﻿<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+  <PropertyGroup>
+    <EnvironmentFlavor>CLIENTPROFILE</EnvironmentFlavor>
+    <EnvironmentTemplate>NET20</EnvironmentTemplate>
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <OutputPath>bin\NET20\Debug</OutputPath>
+    <IntermediateOutputPath>obj\NET20\Debug\</IntermediateOutputPath>
+    <DefineConstants>$(DefineConstants);NOEXTENSIONS</DefineConstants>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <OutputPath>bin\NET20\Release</OutputPath>
+    <IntermediateOutputPath>obj\NET20\Release\</IntermediateOutputPath>
+    <DefineConstants>$(DefineConstants);NOEXTENSIONS</DefineConstants>
+  </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git a/csharp/csproj_templates/NET35.csproj b/csharp/csproj_templates/NET35.csproj
new file mode 100644
index 0000000..80ef69a
--- /dev/null
+++ b/csharp/csproj_templates/NET35.csproj
@@ -0,0 +1,20 @@
+﻿<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+  <PropertyGroup>
+    <EnvironmentFlavor>CLIENTPROFILE</EnvironmentFlavor>
+    <EnvironmentTemplate>NET35</EnvironmentTemplate>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <OutputPath>bin\NET35\Debug</OutputPath>
+    <IntermediateOutputPath>obj\NET35\Debug\</IntermediateOutputPath>
+    <DefineConstants>$(DefineConstants)</DefineConstants>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <OutputPath>bin\NET35\Release</OutputPath>
+    <IntermediateOutputPath>obj\NET35\Release\</IntermediateOutputPath>
+    <DefineConstants>$(DefineConstants)</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System.Core" />
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/csharp/csproj_templates/NET40.csproj b/csharp/csproj_templates/NET40.csproj
new file mode 100644
index 0000000..691845a
--- /dev/null
+++ b/csharp/csproj_templates/NET40.csproj
@@ -0,0 +1,20 @@
+﻿<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <EnvironmentFlavor>CLIENTPROFILE</EnvironmentFlavor>
+    <EnvironmentTemplate>NET40</EnvironmentTemplate>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <OutputPath>bin\NET40\Debug</OutputPath>
+    <IntermediateOutputPath>obj\NET40\Debug\</IntermediateOutputPath>
+    <DefineConstants>$(DefineConstants)</DefineConstants>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <OutputPath>bin\NET40\Release</OutputPath>
+    <IntermediateOutputPath>obj\NET40\Release\</IntermediateOutputPath>
+    <DefineConstants>$(DefineConstants)</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System.Core" />
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/csharp/csproj_templates/PL40.csproj b/csharp/csproj_templates/PL40.csproj
new file mode 100644
index 0000000..2618a79
--- /dev/null
+++ b/csharp/csproj_templates/PL40.csproj
@@ -0,0 +1,51 @@
+﻿<Project ToolsVersion="4.0" DefaultTargets="Build" 
+         xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
+         xmlns:cs="urn:schemas-csharp-project:template">
+  <PropertyGroup>
+    <MinimumVisualStudioVersion>10.0</MinimumVisualStudioVersion>
+    <EnvironmentFlavor>PORTABLE_LIBRARY</EnvironmentFlavor>
+    <EnvironmentTemplate>PL40</EnvironmentTemplate>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <TargetFrameworkProfile>Profile1</TargetFrameworkProfile>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <OutputPath>bin\PL40\Debug</OutputPath>
+    <IntermediateOutputPath>obj\PL40\Debug\</IntermediateOutputPath>
+    <DefineConstants>$(DefineConstants);NOSERIALIZABLE;NOSORTEDLIST</DefineConstants>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <OutputPath>bin\PL40\Release</OutputPath>
+    <IntermediateOutputPath>obj\PL40\Release\</IntermediateOutputPath>
+    <DefineConstants>$(DefineConstants);NOSERIALIZABLE;NOSORTEDLIST</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System.Core" />
+  </ItemGroup>
+  <Import cs:Precondition=" '$(EnvironmentProjectType)' != 'TEST' "
+          Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
+  <!-- Portable Library will be tested as silverlight -->
+  <PropertyGroup cs:Precondition=" '$(EnvironmentProjectType)' == 'TEST' ">
+    <ProjectTypeGuids>{A1591282-1198-4647-A2B1-27E5FF5F6F3B};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+    <ValidateXaml>false</ValidateXaml>
+    <ThrowErrorsInValidation>false</ThrowErrorsInValidation>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <cs:Import Project="SLTest.targets" cs:Precondition=" '$(EnvironmentProjectType)' == 'TEST' " />
+  <Import cs:Precondition=" '$(EnvironmentProjectType)' == 'TEST' "
+          Project="$(MSBuildExtensionsPath32)\Microsoft\Silverlight\$(SilverlightVersion)\Microsoft.Silverlight.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <ProjectExtensions cs:Precondition=" '$(EnvironmentProjectType)' == 'TEST' ">
+    <VisualStudio>
+      <FlavorProperties GUID="{A1591282-1198-4647-A2B1-27E5FF5F6F3B}">
+        <SilverlightProjectProperties />
+      </FlavorProperties>
+    </VisualStudio>
+  </ProjectExtensions>
+</Project>
\ No newline at end of file
diff --git a/csharp/csproj_templates/SL20.csproj b/csharp/csproj_templates/SL20.csproj
new file mode 100644
index 0000000..0abb104
--- /dev/null
+++ b/csharp/csproj_templates/SL20.csproj
@@ -0,0 +1,44 @@
+﻿<Project ToolsVersion="3.5" DefaultTargets="Build" 
+         xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
+         xmlns:cs="urn:schemas-csharp-project:template">
+  <PropertyGroup>
+    <EnvironmentFlavor>SILVERLIGHT</EnvironmentFlavor>
+    <EnvironmentTemplate>SL20</EnvironmentTemplate>
+    <ProjectTypeGuids>{A1591282-1198-4647-A2B1-27E5FF5F6F3B};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+    <SilverlightApplication>false</SilverlightApplication>
+    <ValidateXaml>false</ValidateXaml>
+    <ThrowErrorsInValidation>false</ThrowErrorsInValidation>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <OutputPath>bin\SL20\Debug</OutputPath>
+    <IntermediateOutputPath>obj\SL20\Debug\</IntermediateOutputPath>
+    <DefineConstants>$(DefineConstants);NOSERIALIZABLE;NOSORTEDLIST;NOEXTENSIONS</DefineConstants>
+    <NoConfig>true</NoConfig>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <OutputPath>bin\SL20\Release</OutputPath>
+    <IntermediateOutputPath>obj\SL20\Release\</IntermediateOutputPath>
+    <DefineConstants>$(DefineConstants);NOSERIALIZABLE;NOSORTEDLIST;NOEXTENSIONS</DefineConstants>
+    <NoConfig>true</NoConfig>
+  </PropertyGroup>
+  <!-- Preprocess include of silverlight testing -->
+  <cs:Import Project="SLTest.targets" cs:Precondition=" '$(EnvironmentProjectType)' == 'TEST' " />
+  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Silverlight\v2.0\Microsoft.Silverlight.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <ProjectExtensions>
+    <VisualStudio>
+      <FlavorProperties GUID="{A1591282-1198-4647-A2B1-27E5FF5F6F3B}">
+        <SilverlightProjectProperties>
+          <StartAction>OfflineApplication</StartAction>
+        </SilverlightProjectProperties>
+      </FlavorProperties>
+    </VisualStudio>
+  </ProjectExtensions>
+</Project>
\ No newline at end of file
diff --git a/csharp/csproj_templates/SL30.csproj b/csharp/csproj_templates/SL30.csproj
new file mode 100644
index 0000000..82ea9a8
--- /dev/null
+++ b/csharp/csproj_templates/SL30.csproj
@@ -0,0 +1,47 @@
+﻿<Project ToolsVersion="3.5" DefaultTargets="Build" 
+         xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
+         xmlns:cs="urn:schemas-csharp-project:template">
+  <PropertyGroup>
+    <EnvironmentFlavor>SILVERLIGHT</EnvironmentFlavor>
+    <EnvironmentTemplate>SL30</EnvironmentTemplate>
+    <ProjectTypeGuids>{A1591282-1198-4647-A2B1-27E5FF5F6F3B};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <SilverlightApplication>false</SilverlightApplication>
+    <ValidateXaml>false</ValidateXaml>
+    <ThrowErrorsInValidation>false</ThrowErrorsInValidation>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <OutputPath>bin\SL30\Debug</OutputPath>
+    <IntermediateOutputPath>obj\SL30\Debug\</IntermediateOutputPath>
+    <DefineConstants>$(DefineConstants);NOSERIALIZABLE;NOSORTEDLIST</DefineConstants>
+    <NoConfig>true</NoConfig>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <OutputPath>bin\SL30\Release</OutputPath>
+    <IntermediateOutputPath>obj\SL30\Release\</IntermediateOutputPath>
+    <DefineConstants>$(DefineConstants);NOSERIALIZABLE;NOSORTEDLIST</DefineConstants>
+    <NoConfig>true</NoConfig>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System.Core" />
+  </ItemGroup>
+  <!-- Preprocess include of silverlight testing -->
+  <cs:Import Project="SLTest.targets" cs:Precondition=" '$(EnvironmentProjectType)' == 'TEST' " />
+  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Silverlight\v3.0\Microsoft.Silverlight.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <ProjectExtensions>
+    <VisualStudio>
+      <FlavorProperties GUID="{A1591282-1198-4647-A2B1-27E5FF5F6F3B}">
+        <SilverlightProjectProperties>
+          <StartAction>OfflineApplication</StartAction>
+        </SilverlightProjectProperties>
+      </FlavorProperties>
+    </VisualStudio>
+  </ProjectExtensions>
+</Project>
\ No newline at end of file
diff --git a/csharp/csproj_templates/SL40.csproj b/csharp/csproj_templates/SL40.csproj
new file mode 100644
index 0000000..8a38e3d
--- /dev/null
+++ b/csharp/csproj_templates/SL40.csproj
@@ -0,0 +1,48 @@
+﻿<Project ToolsVersion="4.0" DefaultTargets="Build" 
+         xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
+         xmlns:cs="urn:schemas-csharp-project:template">
+  <PropertyGroup>
+    <EnvironmentFlavor>SILVERLIGHT</EnvironmentFlavor>
+    <EnvironmentTemplate>SL40</EnvironmentTemplate>
+    <ProjectTypeGuids>{A1591282-1198-4647-A2B1-27E5FF5F6F3B};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <SilverlightApplication>false</SilverlightApplication>
+    <ValidateXaml>false</ValidateXaml>
+    <ThrowErrorsInValidation>false</ThrowErrorsInValidation>
+    <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <OutputPath>bin\SL40\Debug</OutputPath>
+    <IntermediateOutputPath>obj\SL40\Debug\</IntermediateOutputPath>
+    <DefineConstants>$(DefineConstants);NOSERIALIZABLE;NOSORTEDLIST</DefineConstants>
+    <NoConfig>true</NoConfig>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <OutputPath>bin\SL40\Release</OutputPath>
+    <IntermediateOutputPath>obj\SL40\Release\</IntermediateOutputPath>
+    <DefineConstants>$(DefineConstants);NOSERIALIZABLE;NOSORTEDLIST</DefineConstants>
+    <NoConfig>true</NoConfig>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System.Core" />
+  </ItemGroup>
+  <!-- Preprocess include of silverlight testing -->
+  <cs:Import Project="SLTest.targets" cs:Precondition=" '$(EnvironmentProjectType)' == 'TEST' " />
+  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Silverlight\$(SilverlightVersion)\Microsoft.Silverlight.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <ProjectExtensions>
+    <VisualStudio>
+      <FlavorProperties GUID="{A1591282-1198-4647-A2B1-27E5FF5F6F3B}">
+        <SilverlightProjectProperties>
+          <StartAction>OfflineApplication</StartAction>
+        </SilverlightProjectProperties>
+      </FlavorProperties>
+    </VisualStudio>
+  </ProjectExtensions>
+</Project>
\ No newline at end of file
diff --git a/csharp/csproj_templates/SLTest.targets b/csharp/csproj_templates/SLTest.targets
new file mode 100644
index 0000000..29da239
--- /dev/null
+++ b/csharp/csproj_templates/SLTest.targets
@@ -0,0 +1,34 @@
+﻿<Project ToolsVersion="3.5" DefaultTargets="Build" 
+         xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
+         xmlns:cs="urn:schemas-csharp-project:template">
+
+  <PropertyGroup>
+    <SilverlightApplication>true</SilverlightApplication>
+    <XapOutputs>true</XapOutputs>
+    <GenerateSilverlightManifest>true</GenerateSilverlightManifest>
+    <XapFilename>$(AssemblyName).xap</XapFilename>
+    <SilverlightManifestTemplate>Properties\AppManifest.xml</SilverlightManifestTemplate>
+    <SilverlightAppEntry>$(RootNamespace).App</SilverlightAppEntry>
+    <TestPageFileName>TestPage.html</TestPageFileName>
+    <CreateTestPage>true</CreateTestPage>
+    <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
+    <OutOfBrowserSettingsFile>Properties\OutOfBrowserSettings.xml</OutOfBrowserSettingsFile>
+    <EnableOutOfBrowser>true</EnableOutOfBrowser>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System.Windows" />
+    <Reference Include="System.Windows.Browser" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="App.xaml.cs">
+      <DependentUpon>App.xaml</DependentUpon>
+    </Compile>
+    <None Include="Properties\AppManifest.xml" />
+    <None Include="Properties\OutOfBrowserSettings.xml" />
+    <ApplicationDefinition Include="App.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </ApplicationDefinition>
+  </ItemGroup>
+  
+</Project>
\ No newline at end of file
diff --git a/csharp/keys/Google.ProtocolBuffers.snk b/csharp/keys/Google.ProtocolBuffers.snk
new file mode 100644
index 0000000..6bbfc90
--- /dev/null
+++ b/csharp/keys/Google.ProtocolBuffers.snk
Binary files differ
diff --git a/csharp/keys/generate_new_key.bat b/csharp/keys/generate_new_key.bat
new file mode 100644
index 0000000..9f99c07
--- /dev/null
+++ b/csharp/keys/generate_new_key.bat
@@ -0,0 +1,13 @@
+@ECHO OFF
+IF EXIST "C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin\sn.exe" GOTO FOUND
+goto USEPATH
+
+:FOUND
+"C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin\sn.exe" -k %~dp0\Google.ProtocolBuffers.snk 
+GOTO EXIT
+
+:USEPATH
+sn.exe -k %~dp0\Google.ProtocolBuffers.snk 
+GOTO EXIT
+
+:EXIT
\ No newline at end of file
diff --git a/csharp/lib/7-Zip 9.20/7-zip.chm b/csharp/lib/7-Zip 9.20/7-zip.chm
new file mode 100644
index 0000000..08e4df2
--- /dev/null
+++ b/csharp/lib/7-Zip 9.20/7-zip.chm
Binary files differ
diff --git a/csharp/lib/7-Zip 9.20/7za.exe b/csharp/lib/7-Zip 9.20/7za.exe
new file mode 100644
index 0000000..7f6bf86
--- /dev/null
+++ b/csharp/lib/7-Zip 9.20/7za.exe
Binary files differ
diff --git a/csharp/lib/7-Zip 9.20/license.txt b/csharp/lib/7-Zip 9.20/license.txt
new file mode 100644
index 0000000..530ff36
--- /dev/null
+++ b/csharp/lib/7-Zip 9.20/license.txt
@@ -0,0 +1,29 @@
+      7-Zip Command line version
+      ~~~~~~~~~~~~~~~~~~~~~~~~~~
+      License for use and distribution
+      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+      7-Zip Copyright (C) 1999-2010 Igor Pavlov.
+
+      7za.exe is distributed under the GNU LGPL license
+
+      Notes: 
+        You can use 7-Zip on any computer, including a computer in a commercial 
+        organization. You don't need to register or pay for 7-Zip.
+
+
+      GNU LGPL information
+      --------------------
+
+        This library is free software; you can redistribute it and/or
+        modify it under the terms of the GNU Lesser General Public
+        License as published by the Free Software Foundation; either
+        version 2.1 of the License, or (at your option) any later version.
+
+        This library is distributed in the hope that it will be useful,
+        but WITHOUT ANY WARRANTY; without even the implied warranty of
+        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+        Lesser General Public License for more details.
+
+        You can receive a copy of the GNU Lesser General Public License from 
+        http://www.gnu.org/
diff --git a/csharp/lib/7-Zip 9.20/readme.txt b/csharp/lib/7-Zip 9.20/readme.txt
new file mode 100644
index 0000000..9ae4222
--- /dev/null
+++ b/csharp/lib/7-Zip 9.20/readme.txt
@@ -0,0 +1,41 @@
+7-Zip Command line version 9.20
+-------------------------------
+
+7-Zip is a file archiver with high compression ratio.
+7za.exe is a standalone command line version of 7-Zip.
+
+7-Zip Copyright (C) 1999-2010 Igor Pavlov.
+
+Features of 7za.exe: 
+  - High compression ratio in new 7z format
+  - Supported formats:
+      - Packing / unpacking: 7z, xz, ZIP, GZIP, BZIP2 and TAR 
+      - Unpacking only: Z, lzma
+  - Highest compression ratio for ZIP and GZIP formats.
+  - Fast compression and decompression
+  - Strong AES-256 encryption in 7z and ZIP formats.
+
+7za.exe is a free software distributed under the GNU LGPL.
+Read license.txt for more information.
+
+Source code of 7za.exe and 7-Zip can be found at
+http://www.7-zip.org/
+
+7za.exe can work in Windows 95/98/ME/NT/2000/2003/2008/XP/Vista/7.
+
+There is also port of 7za.exe for POSIX systems like Unix (Linux, Solaris, OpenBSD, 
+FreeBSD, Cygwin, AIX, ...), MacOS X and BeOS:
+
+http://p7zip.sourceforge.net/
+
+
+  This distributive packet contains the following files:
+
+  7za.exe       - 7-Zip standalone command line version.
+  readme.txt    - This file.
+  license.txt   - License information.
+  7-zip.chm     - User's Manual in HTML Help format.
+
+
+---
+End of document
diff --git a/csharp/lib/CsProjectProjector/CsProjectProjector.exe b/csharp/lib/CsProjectProjector/CsProjectProjector.exe
new file mode 100644
index 0000000..a038e80
--- /dev/null
+++ b/csharp/lib/CsProjectProjector/CsProjectProjector.exe
Binary files differ
diff --git a/csharp/lib/Microsoft.Silverlight.Testing/April2010/EULA.rtf b/csharp/lib/Microsoft.Silverlight.Testing/April2010/EULA.rtf
new file mode 100644
index 0000000..a907d5d
--- /dev/null
+++ b/csharp/lib/Microsoft.Silverlight.Testing/April2010/EULA.rtf
Binary files differ
diff --git a/csharp/lib/Microsoft.Silverlight.Testing/April2010/Microsoft.Silverlight.Testing.dll b/csharp/lib/Microsoft.Silverlight.Testing/April2010/Microsoft.Silverlight.Testing.dll
new file mode 100644
index 0000000..0c6df18
--- /dev/null
+++ b/csharp/lib/Microsoft.Silverlight.Testing/April2010/Microsoft.Silverlight.Testing.dll
Binary files differ
diff --git a/csharp/lib/Microsoft.Silverlight.Testing/April2010/Microsoft.Silverlight.Testing.extmap.xml b/csharp/lib/Microsoft.Silverlight.Testing/April2010/Microsoft.Silverlight.Testing.extmap.xml
new file mode 100644
index 0000000..352d487
--- /dev/null
+++ b/csharp/lib/Microsoft.Silverlight.Testing/April2010/Microsoft.Silverlight.Testing.extmap.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+          xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <assembly>
+    <name>Microsoft.Silverlight.Testing</name>
+    <version>2.0.5.0</version>
+    <publickeytoken>31bf3856ad364e35</publickeytoken>
+    <relpath>Microsoft.Silverlight.Testing.dll</relpath>
+    <extension downloadUri="Microsoft.Silverlight.Testing.zip" />
+  </assembly>
+
+</manifest>
\ No newline at end of file
diff --git a/csharp/lib/Microsoft.Silverlight.Testing/April2010/Microsoft.Silverlight.Testing.pdb b/csharp/lib/Microsoft.Silverlight.Testing/April2010/Microsoft.Silverlight.Testing.pdb
new file mode 100644
index 0000000..a86119c
--- /dev/null
+++ b/csharp/lib/Microsoft.Silverlight.Testing/April2010/Microsoft.Silverlight.Testing.pdb
Binary files differ
diff --git a/csharp/lib/Microsoft.Silverlight.Testing/April2010/Microsoft.Silverlight.Testing.xml b/csharp/lib/Microsoft.Silverlight.Testing/April2010/Microsoft.Silverlight.Testing.xml
new file mode 100644
index 0000000..477ce70
--- /dev/null
+++ b/csharp/lib/Microsoft.Silverlight.Testing/April2010/Microsoft.Silverlight.Testing.xml
@@ -0,0 +1,14796 @@
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>Microsoft.Silverlight.Testing</name>
+    </assembly>
+    <members>
+        <member name="T:Microsoft.VisualStudio.TestTools.UnitTesting.Test">
+            <summary>
+            A class containing an Assert method.
+            </summary>
+        </member>
+        <member name="F:Microsoft.VisualStudio.TestTools.UnitTesting.Test.IsNotNull">
+            <summary>
+            The MethodInfo object used to invoke Assert.IsNotNull.
+            </summary>
+        </member>
+        <member name="F:Microsoft.VisualStudio.TestTools.UnitTesting.Test.AreNotSame">
+            <summary>
+            The MethodInfo object used to invoke Assert.AreNotSame.
+            </summary>        
+        </member>
+        <member name="F:Microsoft.VisualStudio.TestTools.UnitTesting.Test.AreNotEqual">
+            <summary>
+            The MethodInfo object used to invoke Assert.AreNotEqual.
+            </summary>        
+        </member>
+        <member name="F:Microsoft.VisualStudio.TestTools.UnitTesting.Test.AreSame">
+            <summary>
+            The MethodInfo object used to invoke Assert.AreSame.
+            </summary>
+        </member>
+        <member name="F:Microsoft.VisualStudio.TestTools.UnitTesting.Test.AreEqual">
+            <summary>
+            The MethodInfo object used to invoke Assert.AreEqual.
+            </summary>
+        </member>
+        <member name="F:Microsoft.VisualStudio.TestTools.UnitTesting.Test.IsNull">
+            <summary>
+            The MethodInfo object used to invoke Assert.IsNull.
+            </summary>
+        </member>
+        <member name="F:Microsoft.VisualStudio.TestTools.UnitTesting.Test.IsFalse">
+            <summary>
+            The MethodInfo object used to invoke Assert.IsFalse.
+            </summary>
+        </member>
+        <member name="F:Microsoft.VisualStudio.TestTools.UnitTesting.Test.IsTrue">
+            <summary>
+            The MethodInfo object used to invoke Assert.IsTrue.
+            </summary>
+        </member>
+        <member name="F:Microsoft.VisualStudio.TestTools.UnitTesting.Test.FindAnonymousTypeExpressionInString">
+            <summary>
+            A regular expression which identifies a pattern signifying an 
+            anonymous type.  This pattern is emitted by the Expression object 
+            when it converts an anonymous type to a string.
+            </summary>
+        </member>
+        <member name="F:Microsoft.VisualStudio.TestTools.UnitTesting.Test.FindTransparentIdentifier">
+            <summary>
+            A regular expression which identifies a pattern emitted by an
+            Expression object when it converts an anonymous type to a
+            string.
+            </summary>
+        </member>
+        <member name="M:Microsoft.VisualStudio.TestTools.UnitTesting.Test.Assert(System.Linq.Expressions.Expression{System.Func{System.Boolean}})">
+            <summary>
+            Asserts a condition is true.
+            </summary>
+            <param name="predicate">The condition that must be true.</param>
+        </member>
+        <member name="M:Microsoft.VisualStudio.TestTools.UnitTesting.Test.Assert(System.Linq.Expressions.Expression{System.Func{System.Boolean}},System.String)">
+            <summary>
+            Asserts a condition is true.
+            </summary>
+            <param name="predicate">The condition that must be true.</param>
+            <param name="message">The message to be displayed when the test fails.</param>
+        </member>
+        <member name="M:Microsoft.VisualStudio.TestTools.UnitTesting.Test.GetMessageExpression(System.Linq.Expressions.Expression,System.String)">
+            <summary>
+            Generates an assert failure message using the code block
+            responsible for the failure.
+            </summary>
+            <param name="expression">The predicate that fails.</param>
+            <param name="message">The user-provided assertion failure message.
+            </param>
+            <returns>A constant expression containing the user-provided failure
+            message or a description of the expression that failed.</returns>
+        </member>
+        <member name="M:Microsoft.VisualStudio.TestTools.UnitTesting.Test.CreateAssertExpressionAction(System.Linq.Expressions.Expression,System.String)">
+            <summary>
+            Analyzes the expression and creates an action which calls the 
+            correct assert method based on its contents.
+            </summary>
+            <param name="expression">The predicate expression.</param>
+            <param name="message">The message to display if an assertion fails.</param>
+            <returns>An action which calls the correct assert method.</returns>
+        </member>
+        <member name="M:Microsoft.VisualStudio.TestTools.UnitTesting.Test.AssertExpression``1(System.Linq.Expressions.Expression{System.Func{System.Boolean}},System.String)">
+            <summary>
+            Analyzes a predicate expression and invokes the correct assert 
+            method.
+            </summary>
+            <typeparam name="T">The type of the argument to the predicate.
+            </typeparam>
+            <param name="predicate">A predicate to be converted into an 
+            assert statement.</param>
+            <param name="message">The assertion message.</param> 
+        </member>
+        <member name="M:Microsoft.VisualStudio.TestTools.UnitTesting.Test.CreateBinaryExpressionAction(System.Linq.Expressions.BinaryExpression,System.String)">
+            <summary>
+            Creates an action from certain types of supported binary expression
+            patterns.  If no supported pattern is found null is returned.  Based
+            on analyzing the predicate the action invokes the correct Assert
+            method.
+            </summary>
+            <param name="binaryExpression">A binary expression extracted from a
+            predicate expression.</param>
+            <param name="message">The message to display if the assertion 
+            fails.</param>
+            <returns>An action that invokes an Assert method.</returns>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.AsynchronousAttribute">
+            <summary>
+            Mark the test method as one which expects asynchronous execution. 
+            It is important to call TestComplete() once it is ready or your 
+            test will never continue/timeout.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.BugAttribute">
+            <summary>
+            An attribute that contains known bug information that can be logged 
+            during a unit test run. 
+            
+            When applied to a test method, it will invert the result. This makes it 
+            possible to perform automated runs and continuous integration while 
+            validating and tracking known issues.
+            
+            The attribute should have the Fixed bool set to True, or be removed, 
+            once the issue is resolved.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.BugAttribute.#ctor">
+            <summary>
+            Construct a new BugAttribute with no bug description.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.BugAttribute.#ctor(System.String)">
+            <summary>
+            Construct a new BugAttribute with a bug description.
+            </summary>
+            <param name="description">Known issue text.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.BugAttribute.ToString">
+            <summary>
+            Return the bug information.
+            </summary>
+            <returns>Known issue as a string.</returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.BugAttribute.Description">
+            <summary>
+            Gets the bug description.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.BugAttribute.Fixed">
+            <summary>
+            Gets or sets a value indicating whether the known issue has been 
+            fixed. If it has, the attribute is ignored and will not affect 
+            test results.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.AdvancedButton">
+            <summary>
+            Represents a control that builds on top of the standard platform Button,
+            offering the ability to modify the corner radii or even use special
+            button modes.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.AdvancedButton.SecondaryVisibilityProperty">
+            <summary>
+            Identifies the SecondaryVisibility dependency property.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.AdvancedButton.CornerRadiusProperty">
+            <summary>
+            Identifies the CornerRadius dependency property.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.AdvancedButton.SecondaryVisibility">
+            <summary>
+            Gets or sets the visibility of a secondary set of visuals in the
+            template.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.AdvancedButton.CornerRadius">
+            <summary>
+            Gets or sets the corner radius to use.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.BrushSelector">
+            <summary>
+            A color selection converter for translating a bool result into
+            a color.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.BrushSelector.#ctor">
+            <summary>
+            Initializes a new instance of the ColorSelectorConverter type.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.BrushSelector.Convert(System.Object,System.Type,System.Object,System.Globalization.CultureInfo)">
+            <summary>
+            Convert a boolean value to a Color value.
+            </summary>
+            <param name="value">The value.</param>
+            <param name="targetType">The target parameter.</param>
+            <param name="parameter">ConverterParameter is of type Visibility.</param>
+            <param name="culture">The culture parameter.</param>
+            <returns>Returns the object.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.BrushSelector.ConvertBack(System.Object,System.Type,System.Object,System.Globalization.CultureInfo)">
+            <summary>
+            Support 2-way databinding of the VisibilityConverter, converting 
+            Visibility to a boolean.
+            </summary>
+            <param name="value">The value.</param>
+            <param name="targetType">The target parameter.</param>
+            <param name="parameter">ConverterParameter is of type Visibility.</param>
+            <param name="culture">The culture parameter.</param>
+            <returns>Returns the object.</returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.BrushSelector.TrueBrush">
+            <summary>
+            Gets or sets the color to use for true values.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.BrushSelector.FalseBrush">
+            <summary>
+            Gets or sets the color to use for false values.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Controls.CollectionHelper">
+            <summary>
+            A set of extension methods for manipulating collections.
+            </summary>
+            <QualityBand>Experimental</QualityBand>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.CollectionHelper.IsReadOnly(System.Collections.IEnumerable)">
+            <summary>
+            Returns a value indicating whether a collection is read-only.
+            </summary>
+            <param name="collection">The collection to examine.</param>
+            <returns>A value indicating whether a collection is read-only.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.CollectionHelper.CanInsert(System.Collections.IEnumerable,System.Object)">
+            <summary>
+            Returns a value Indicating whether an item can be inserted in a 
+            collection.
+            </summary>
+            <param name="collection">The collection.</param>
+            <param name="item">The item to be inserted.</param>
+            <returns>A value Indicating whether an item can be inserted in a 
+            collection.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.CollectionHelper.Insert(System.Collections.IEnumerable,System.Int32,System.Object)">
+            <summary>
+            Inserts an item into the collection at an index.
+            </summary>
+            <param name="collection">The collection.</param>
+            <param name="index">The index at which to insert the item.</param> 
+            <param name="item">The item to be inserted.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.CollectionHelper.Count(System.Collections.IEnumerable)">
+            <summary>
+            Gets the number of items in the collection.
+            </summary>
+            <param name="collection">The collection.</param>
+            <returns>The number of items in the collection.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.CollectionHelper.Add(System.Collections.IEnumerable,System.Object)">
+            <summary>
+            Adds an item to the collection.
+            </summary>
+            <param name="collection">The collection.</param>
+            <param name="item">The item to be added.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.CollectionHelper.Remove(System.Collections.IEnumerable,System.Object)">
+            <summary>
+            Removes an item from the collection.
+            </summary>
+            <param name="collection">The collection.</param>
+            <param name="item">The item to be removed.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.CollectionHelper.RemoveAt(System.Collections.IEnumerable,System.Int32)">
+            <summary>
+            Removes an item at a given index from the collection.
+            </summary>
+            <param name="collection">The collection.</param>
+            <param name="index">The index of the item to be removed.</param>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.ColorSelectorConverter">
+            <summary>
+            A color selection converter for translating a bool result into
+            a color.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.ColorSelectorConverter.DefaultTrueColor">
+            <summary>
+            The default true color.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.ColorSelectorConverter.DefaultFalseColor">
+            <summary>
+            The default false color.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.ColorSelectorConverter.#ctor">
+            <summary>
+            Initializes a new instance of the ColorSelectorConverter type.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.ColorSelectorConverter.Convert(System.Object,System.Type,System.Object,System.Globalization.CultureInfo)">
+            <summary>
+            Convert a boolean value to a Color value.
+            </summary>
+            <param name="value">The value.</param>
+            <param name="targetType">The target parameter.</param>
+            <param name="parameter">ConverterParameter is of type Visibility.</param>
+            <param name="culture">The culture parameter.</param>
+            <returns>Returns the object.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.ColorSelectorConverter.ConvertBack(System.Object,System.Type,System.Object,System.Globalization.CultureInfo)">
+            <summary>
+            Support 2-way databinding of the VisibilityConverter, converting 
+            Visibility to a boolean.
+            </summary>
+            <param name="value">The value.</param>
+            <param name="targetType">The target parameter.</param>
+            <param name="parameter">ConverterParameter is of type Visibility.</param>
+            <param name="culture">The culture parameter.</param>
+            <returns>Returns the object.</returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.ColorSelectorConverter.TrueColor">
+            <summary>
+            Gets or sets the color to use for true values.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.ColorSelectorConverter.FalseColor">
+            <summary>
+            Gets or sets the color to use for false values.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Controls.EnumerableExtensions">
+            <summary>
+            A set of extension methods for the sequence class.
+            </summary>;dsf
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.EnumerableExtensions.Iterate``1(``0,System.Func{``0,``0})">
+            <summary>
+            Produces a sequence of items using a seed value and iteration 
+            method.
+            </summary>
+            <typeparam name="T">The type of the sequence.</typeparam>
+            <param name="value">The initial value.</param>
+            <param name="next">The iteration function.</param>
+            <returns>A sequence of items using a seed value and iteration 
+            method.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.EnumerableExtensions.Prepend``1(System.Collections.Generic.IEnumerable{``0},``0)">
+            <summary>
+            Prepend an item to a sequence.
+            </summary>
+            <typeparam name="T">The type of the sequence.</typeparam>
+            <param name="that">The sequence to append the item to.</param>
+            <param name="value">The item to append to the sequence.</param>
+            <returns>A new sequence.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.EnumerableExtensions.Zip``3(System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.IEnumerable{``1},System.Func{``0,``1,``2})">
+            <summary>
+            Accepts two sequences and applies a function to the corresponding 
+            values in the two sequences.
+            </summary>
+            <typeparam name="T0">The type of the first sequence.</typeparam>
+            <typeparam name="T1">The type of the second sequence.</typeparam>
+            <typeparam name="R">The return type of the function.</typeparam>
+            <param name="enumerable0">The first sequence.</param>
+            <param name="enumerable1">The second sequence.</param>
+            <param name="func">The function to apply to the corresponding values
+            from the two sequences.</param>
+            <returns>A sequence of transformed values from both sequences.</returns>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.FontWeightConverter">
+            <summary>
+            A converter for modifying the font weight based on a parameter.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.FontWeightConverter.Convert(System.Object,System.Type,System.Object,System.Globalization.CultureInfo)">
+            <summary>
+            Convert a boolean value to a FontWeight value.
+            </summary>
+            <param name="value">The value object.</param>
+            <param name="targetType">The target parameter.</param>
+            <param name="parameter">ConverterParameter is of type Visibility.</param>
+            <param name="culture">The culture parameter.</param>
+            <returns>Returns the object.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.FontWeightConverter.ConvertBack(System.Object,System.Type,System.Object,System.Globalization.CultureInfo)">
+            <summary>
+            Support 2-way databinding of the VisibilityConverter, converting 
+            Visibility to a bool.
+            </summary>
+            <param name="value">The value object.</param>
+            <param name="targetType">The target parameter.</param>
+            <param name="parameter">ConverterParameter is of type Visibility.</param>
+            <param name="culture">The culture parameter.</param>
+            <returns>Returns the object.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.FontWeightConverter.GetFontWeightMode(System.Object)">
+            <summary>
+            Determine the visibility mode based on a converter parameter. This
+            parameter is of type Visibility, and specifies what visibility value
+            to return when the boolean value is true.
+            </summary>
+            <param name="parameter">The parameter object.</param>
+            <returns>Returns a FontWeight value.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.FontWeightConverter.IsFontWeightInverted(System.Object)">
+            <summary>
+            Determine whether or not weight is inverted based on a converter
+            parameter.
+            </summary>
+            <param name="parameter">The parameter instance.</param>
+            <returns>Returns a value indicating whether the instance is 
+            inverting.</returns>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Controls.FunctionalProgramming">
+            <summary>
+            Collection of functions for functional programming tasks.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.FunctionalProgramming.TraverseBreadthFirst``1(``0,System.Func{``0,System.Collections.Generic.IEnumerable{``0}},System.Func{``0,System.Boolean})">
+            <summary>
+            Traverses a tree by accepting an initial value and a function that 
+            retrieves the child nodes of a node.
+            </summary>
+            <typeparam name="T">The type of the stream.</typeparam>
+            <param name="initialNode">The initial node.</param>
+            <param name="getChildNodes">A function that retrieves the child
+            nodes of a node.</param>
+            <param name="traversePredicate">A predicate that evaluates a node
+            and returns a value indicating whether that node and it's children
+            should be traversed.</param>
+            <returns>A stream of nodes.</returns>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.Header">
+            <summary>
+            The test results header control.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.Header.#ctor">
+            <summary>
+            Initializes a new instance of the Header type.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.Header.InitializeComponent">
+            <summary>
+            InitializeComponent
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.InvertedTypeNameVisibilityConverter">
+            <summary>
+            A value converter for collapsing or showing elements based on the bound
+            object's type name. Does not walk the hierarchy - it is explicit to the
+            most specific class for the value. This class,
+            InvertedTypeNameVisibilityConverter, offers the opposite behavior of the
+            TypeNameVisibilityConverter class.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.TypeNameVisibilityConverter">
+            <summary>
+            A value converter for collapsing or showing elements based on the bound
+            object's type name. Does not walk the hierarchy - it is explicit to the
+            most specific class for the value.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TypeNameVisibilityConverter.Convert(System.Object,System.Type,System.Object,System.Globalization.CultureInfo)">
+            <summary>
+            Convert a value based on CLR type to a Visibility value. Does not
+            walk the type tree, however.
+            </summary>
+            <param name="value">The value instance.</param>
+            <param name="targetType">The target parameter.</param>
+            <param name="parameter">ConverterParameter is the name of the type,
+            both short and full names are checked, short name first.</param>
+            <param name="culture">The culture parameter.</param>
+            <returns>Returns the object.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TypeNameVisibilityConverter.ConvertBack(System.Object,System.Type,System.Object,System.Globalization.CultureInfo)">
+            <summary>
+            Convert back, not supported with this value converter.
+            </summary>
+            <param name="value">The value instance.</param>
+            <param name="targetType">The target parameter.</param>
+            <param name="parameter">ConverterParameter is of type Visibility.</param>
+            <param name="culture">The culture parameter.</param>
+            <returns>Returns the object.</returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TypeNameVisibilityConverter.IsInverted">
+            <summary>
+            Gets a value indicating whether the visibility value should be
+            inverted.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.InvertedTypeNameVisibilityConverter.IsInverted">
+            <summary>
+            Gets a value indicating whether the visibility value should be
+            inverted.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Controls.ItemsControlExtensions">
+            <summary>
+            Provides useful extensions to ItemsControl instances.
+            </summary>
+            <QualityBand>Experimental</QualityBand>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ItemsControlExtensions.GetItemsHost(System.Windows.Controls.ItemsControl)">
+            <summary>
+            Gets the Panel that contains the containers of an ItemsControl.
+            </summary>
+            <param name="control">The ItemsControl.</param>
+            <returns>
+            The Panel that contains the containers of an ItemsControl, or null
+            if the Panel could not be found.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="control" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ItemsControlExtensions.GetScrollHost(System.Windows.Controls.ItemsControl)">
+            <summary>
+            Gets the ScrollViewer that contains the containers of an
+            ItemsControl.
+            </summary>
+            <param name="control">The ItemsControl.</param>
+            <returns>
+            The ScrollViewer that contains the containers of an ItemsControl, or
+            null if a ScrollViewer could not be found.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="control" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ItemsControlExtensions.GetContainers(System.Windows.Controls.ItemsControl)">
+            <summary>
+            Get the item containers of an ItemsControl.
+            </summary>
+            <param name="control">The ItemsControl.</param>
+            <returns>The item containers of an ItemsControl.</returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="control" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ItemsControlExtensions.GetContainers``1(System.Windows.Controls.ItemsControl)">
+            <summary>
+            Get the item containers of an ItemsControl.
+            </summary>
+            <typeparam name="TContainer">
+            The type of the item containers.
+            </typeparam>
+            <param name="control">The ItemsControl.</param>
+            <returns>The item containers of an ItemsControl.</returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="control" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ItemsControlExtensions.GetContainersIterator``1(System.Windows.Controls.ItemsControl)">
+            <summary>
+            Get the item containers of an ItemsControl.
+            </summary>
+            <typeparam name="TContainer">
+            The type of the item containers.
+            </typeparam>
+            <param name="control">The ItemsControl.</param>
+            <returns>The item containers of an ItemsControl.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ItemsControlExtensions.GetItemsAndContainers(System.Windows.Controls.ItemsControl)">
+            <summary>
+            Get the items and item containers of an ItemsControl.
+            </summary>
+            <param name="control">The ItemsControl.</param>
+            <returns>The items and item containers of an ItemsControl.</returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="control" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ItemsControlExtensions.GetItemsAndContainers``1(System.Windows.Controls.ItemsControl)">
+            <summary>
+            Get the items and item containers of an ItemsControl.
+            </summary>
+            <typeparam name="TContainer">
+            The type of the item containers.
+            </typeparam>
+            <param name="control">The ItemsControl.</param>
+            <returns>The items and item containers of an ItemsControl.</returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="control" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ItemsControlExtensions.GetItemsAndContainersIterator``1(System.Windows.Controls.ItemsControl)">
+            <summary>
+            Get the items and item containers of an ItemsControl.
+            </summary>
+            <typeparam name="TContainer">
+            The type of the item containers.
+            </typeparam>
+            <param name="control">The ItemsControl.</param>
+            <returns>The items and item containers of an ItemsControl.</returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="control" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ItemsControlExtensions.CanAddItem(System.Windows.Controls.ItemsControl,System.Object)">
+            <summary>
+            Returns a value indicating whether an item can be added to an
+            ItemsControl.
+            </summary>
+            <param name="that">The ItemsControl instance.</param>
+            <param name="item">The item to be added.</param>
+            <returns>A value Indicating whether an item can be added to an
+            ItemsControl.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ItemsControlExtensions.CanRemoveItem(System.Windows.Controls.ItemsControl)">
+            <summary>
+            Returns a value indicating whether an item can be removed from the
+            ItemsControl.
+            </summary>
+            <param name="that">The items control.</param>
+            <returns>A value indicating whether an item can be removed from the
+            ItemsControl.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ItemsControlExtensions.InsertItem(System.Windows.Controls.ItemsControl,System.Int32,System.Object)">
+            <summary>
+            Inserts an item into an ItemsControl.
+            </summary>
+            <param name="that">The ItemsControl instance.</param>
+            <param name="index">The index at which to insert the item.</param>
+            <param name="item">The item to be inserted.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ItemsControlExtensions.AddItem(System.Windows.Controls.ItemsControl,System.Object)">
+            <summary>
+            Adds an item to an ItemsControl.
+            </summary>
+            <param name="that">The ItemsControl instance.</param>
+            <param name="item">The item to be inserted.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ItemsControlExtensions.RemoveItem(System.Windows.Controls.ItemsControl,System.Object)">
+            <summary>
+            Removes an item from an ItemsControl.
+            </summary>
+            <param name="that">The ItemsControl instance.</param>
+            <param name="item">The item to be removed.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ItemsControlExtensions.RemoveItemAtIndex(System.Windows.Controls.ItemsControl,System.Int32)">
+            <summary>
+            Removes an item from an ItemsControl.
+            </summary>
+            <param name="that">The ItemsControl instance.</param>
+            <param name="index">The index of the item to be removed.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ItemsControlExtensions.GetItemCount(System.Windows.Controls.ItemsControl)">
+            <summary>
+            Gets the number of items in an ItemsControl.
+            </summary>
+            <param name="that">The ItemsControl instance.</param>
+            <returns>The number of items in the ItemsControl.</returns>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.LayoutTransformer">
+            <summary>
+            Represents a control that applies a layout transformation to its Content.
+            </summary>
+            <QualityBand>Preview</QualityBand>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.LayoutTransformer.TransformRootName">
+            <summary>
+            Name of the TransformRoot template part.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.LayoutTransformer.PresenterName">
+            <summary>
+            Name of the Presenter template part.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.LayoutTransformer.AcceptableDelta">
+            <summary>
+            Acceptable difference between two doubles.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.LayoutTransformer.DecimalsAfterRound">
+            <summary>
+            Number of decimals to round the Matrix to.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.LayoutTransformer.LayoutTransformProperty">
+            <summary>
+            Identifies the LayoutTransform DependencyProperty.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.LayoutTransformer._transformRoot">
+            <summary>
+            Root element for performing transformations.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.LayoutTransformer._contentPresenter">
+            <summary>
+            ContentPresenter element for displaying the content.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.LayoutTransformer._matrixTransform">
+            <summary>
+            RenderTransform/MatrixTransform applied to _transformRoot.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.LayoutTransformer._transformation">
+            <summary>
+            Transformation matrix corresponding to _matrixTransform.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.LayoutTransformer._childActualSize">
+            <summary>
+            Actual DesiredSize of Child element (the value it returned from its MeasureOverride method).
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.LayoutTransformer.#ctor">
+            <summary>
+            Initializes a new instance of the LayoutTransformer class.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.LayoutTransformer.OnApplyTemplate">
+            <summary>
+            Builds the visual tree for the LayoutTransformer control when a new 
+            template is applied.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.LayoutTransformer.LayoutTransformChanged(System.Windows.DependencyObject,System.Windows.DependencyPropertyChangedEventArgs)">
+            <summary>
+            Handles changes to the Transform DependencyProperty.
+            </summary>
+            <param name="o">Source of the change.</param>
+            <param name="e">Event args.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.LayoutTransformer.ApplyLayoutTransform">
+            <summary>
+            Applies the layout transform on the LayoutTransformer control content.
+            </summary>
+            <remarks>
+            Only used in advanced scenarios (like animating the LayoutTransform). 
+            Should be used to notify the LayoutTransformer control that some aspect 
+            of its Transform property has changed. 
+            </remarks>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.LayoutTransformer.ProcessTransform(System.Windows.Media.Transform)">
+            <summary>
+            Processes the Transform to determine the corresponding Matrix.
+            </summary>
+            <param name="transform">Transform to process.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.LayoutTransformer.GetTransformMatrix(System.Windows.Media.Transform)">
+            <summary>
+            Walks the Transform(Group) and returns the corresponding Matrix.
+            </summary>
+            <param name="transform">Transform(Group) to walk.</param>
+            <returns>Computed Matrix.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.LayoutTransformer.MeasureOverride(System.Windows.Size)">
+            <summary>
+            Provides the behavior for the "Measure" pass of layout.
+            </summary>
+            <param name="availableSize">The available size that this element can give to child elements.</param>
+            <returns>The size that this element determines it needs during layout, based on its calculations of child element sizes.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.LayoutTransformer.ArrangeOverride(System.Windows.Size)">
+            <summary>
+            Provides the behavior for the "Arrange" pass of layout.
+            </summary>
+            <param name="finalSize">The final area within the parent that this element should use to arrange itself and its children.</param>
+            <returns>The actual size used.</returns>
+            <remarks>
+            Using the WPF paramater name finalSize instead of Silverlight's finalSize for clarity
+            </remarks>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.LayoutTransformer.ComputeLargestTransformedSize(System.Windows.Size)">
+            <summary>
+            Compute the largest usable size (greatest area) after applying the transformation to the specified bounds.
+            </summary>
+            <param name="arrangeBounds">Arrange bounds.</param>
+            <returns>Largest Size possible.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.LayoutTransformer.IsSizeSmaller(System.Windows.Size,System.Windows.Size)">
+            <summary>
+            Returns true if Size a is smaller than Size b in either dimension.
+            </summary>
+            <param name="a">Second Size.</param>
+            <param name="b">First Size.</param>
+            <returns>True if Size a is smaller than Size b in either dimension.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.LayoutTransformer.RoundMatrix(System.Windows.Media.Matrix,System.Int32)">
+            <summary>
+            Rounds the non-offset elements of a Matrix to avoid issues due to floating point imprecision.
+            </summary>
+            <param name="matrix">Matrix to round.</param>
+            <param name="decimals">Number of decimal places to round to.</param>
+            <returns>Rounded Matrix.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.LayoutTransformer.RectTransform(System.Windows.Rect,System.Windows.Media.Matrix)">
+            <summary>
+            Implements WPF's Rect.Transform on Silverlight.
+            </summary>
+            <param name="rect">Rect to transform.</param>
+            <param name="matrix">Matrix to transform with.</param>
+            <returns>Bounding box of transformed Rect.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.LayoutTransformer.MatrixMultiply(System.Windows.Media.Matrix,System.Windows.Media.Matrix)">
+            <summary>
+            Implements WPF's Matrix.Multiply on Silverlight.
+            </summary>
+            <param name="matrix1">First matrix.</param>
+            <param name="matrix2">Second matrix.</param>
+            <returns>Multiplication result.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.LayoutTransformer.MatrixHasInverse(System.Windows.Media.Matrix)">
+            <summary>
+            Implements WPF's Matrix.HasInverse on Silverlight.
+            </summary>
+            <param name="matrix">Matrix to check for inverse.</param>
+            <returns>True if the Matrix has an inverse.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.LayoutTransformer.DiagnosticWriteLine(System.String)">
+            <summary>
+            Outputs diagnostic info if DIAGNOSTICWRITELINE is defined.
+            </summary>
+            <param name="message">Diagnostic message.</param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.LayoutTransformer.LayoutTransform">
+            <summary>
+            Gets or sets the layout transform to apply on the LayoutTransformer 
+            control content.
+            </summary>
+            <remarks>
+            Corresponds to UIElement.LayoutTransform.
+            </remarks>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.LayoutTransformer.Child">
+            <summary>
+            Gets the child element being transformed.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.MobileStartup">
+            <summary>
+            The TagEditor control provides a brief user interface allowing for the
+            selection of a set of tests, used to filter the test run.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.MobileStartup.TagHistoryKey">
+            <summary>
+            Key used to lookup the TagHistory site setting.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.MobileStartup.SecondsToWait">
+            <summary>
+            Number of seconds to wait before running the test.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileStartup.#ctor(System.String)">
+            <summary>
+            Initializes a new instance of the TagEditor type.
+            </summary>
+            <param name="initialTagExpression">The tag expression to use.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileStartup.#ctor">
+            <summary>
+            Initializes a new instance of the TagEditor type.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileStartup.OnComplete(Microsoft.Silverlight.Testing.Client.TagExpressionEventArgs)">
+            <summary>
+            Fires the Complete event.
+            </summary>
+            <param name="e">The event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileStartup.OnTouchToEnterTextClick(System.Object,System.Windows.RoutedEventArgs)">
+            <summary>
+            Handle touch of the button to display the text box.
+            </summary>
+            <param name="sender">Tag button.</param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileStartup.OnTagButtonClicked(System.Object,System.Windows.RoutedEventArgs)">
+            <summary>
+            Handle selection of a tag button.
+            </summary>
+            <param name="sender">Tag button.</param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileStartup.OnTagTouched(System.Object,System.Windows.RoutedEventArgs)">
+            <summary>
+            Handle changes to the Tag text.
+            </summary>
+            <param name="sender">Tag TextBox.</param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileStartup.OnRunClicked(System.Object,System.Windows.RoutedEventArgs)">
+            <summary>
+            Handle clicks to the Run button.
+            </summary>
+            <param name="sender">Run Button.</param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileStartup.OnTimerTick(System.Object,System.EventArgs)">
+            <summary>
+            Handle timer ticks.
+            </summary>
+            <param name="sender">The timer.</param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileStartup.StopTimer">
+            <summary>
+            Stop the timer.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileStartup.RunTests">
+            <summary>
+            Run the unit tests.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileStartup.OnCancelClicked(System.Object,System.Windows.RoutedEventArgs)">
+            <summary>
+            Cancels the selection of a tag expression.
+            </summary>
+            <param name="sender">The source object.</param>
+            <param name="e">The event data.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileStartup.InitializeComponent">
+            <summary>
+            InitializeComponent
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.MobileStartup.Timer">
+            <summary>
+            Gets or sets the timer used to automatically run tests if no tag is
+            entered.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.MobileStartup.SecondsWaited">
+            <summary>
+            Gets or sets the number of seconds already waited.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.MobileStartup.TagHistory">
+            <summary>
+            Gets or sets the tag history.
+            </summary>
+        </member>
+        <member name="E:Microsoft.Silverlight.Testing.Client.MobileStartup.Complete">
+            <summary>
+            An event that indicates that the tag editor is complete. This can be
+            in response to many actions: the user entering a tag expression, the
+            time expiring and the default being selected, or the selection being
+            canceled.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.MobileTestExceptionDetails">
+            <summary>
+            Mobile test exceptions page.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileTestExceptionDetails.#ctor">
+            <summary>
+            Initializes a new instance of the page.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileTestExceptionDetails.InitializeComponent">
+            <summary>
+            InitializeComponent
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.MobileTestMethodDetails">
+            <summary>
+            Mobile test method details page.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileTestMethodDetails.#ctor">
+            <summary>
+            Initializes a new instance of the page.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileTestMethodDetails.InitializeComponent">
+            <summary>
+            InitializeComponent
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.MobileTestPage">
+            <summary>
+            A user control designed for mobile platforms. The control should be used
+            as the root visual for a Silverlight plugin if developers would like to 
+            use the advanced TestSurface functionality.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.ITestPage">
+            <summary>
+            An interface for any test page instances to implement.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.ITestPage.TestPanel">
+            <summary>
+            Gets the test panel instance.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.IMobileTestPage">
+            <summary>
+            An interface for any test page instances to implement.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.IMobileTestPage.NavigateBack">
+            <summary>
+            Requests navigation back a page.
+            </summary>
+            <returns>A value indicating whether the operation was successful.</returns>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.MobileTestPage._slides">
+            <summary>
+            Contains the slide manager for the primitive user interface
+            navigation system.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.MobileTestPage._harness">
+            <summary>
+            Backing field for the unit test harness instance.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.MobileTestPage._delayedInitializationTimer">
+            <summary>
+            Backing field for the startup timer.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.MobileTestPage._model">
+            <summary>
+            Backing field for the model manager.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileTestPage.#ctor">
+            <summary>
+            Initializes a new instance of the MobileTestPage class.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileTestPage.#ctor(Microsoft.Silverlight.Testing.Harness.UnitTestHarness)">
+            <summary>
+            Initializes the MobileTestPage object.
+            </summary>
+            <param name="harness">The test harness instance.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileTestPage.OnDelayedInitializationTick(System.Object,System.EventArgs)">
+            <summary>
+            Waits for the Settings to become available, either by the service or
+            system setting the instance property.
+            </summary>
+            <param name="sender">The source timer.</param>
+            <param name="e">The event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileTestPage.CreateAndInsertSlide(System.String,System.Object)">
+            <summary>
+            Creates a new slide and inserts it into the slide manager, plus
+            visual tree.
+            </summary>
+            <param name="header">The text header to use.</param>
+            <param name="content">The content to inside the slide.</param>
+            <returns>Returns the new Slide instance.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileTestPage.OnTagExpressionSelected(System.Object,Microsoft.Silverlight.Testing.Client.TagExpressionEventArgs)">
+            <summary>
+            Handles the completion event on the tag expression editor to begin
+            the test run using the user-provided settings.
+            </summary>
+            <param name="sender">The source object.</param>
+            <param name="e">The event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileTestPage.StartTestRun">
+            <summary>
+            Starts the test run.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileTestPage.OnTestHarnessCompleted(System.Object,Microsoft.Silverlight.Testing.Harness.TestHarnessCompletedEventArgs)">
+            <summary>
+            Handles the test harness complete event, to display results.
+            </summary>
+            <param name="sender">The source object.</param>
+            <param name="e">The event data.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileTestPage.OnMoveBackToTestAssembliesClick(System.Object,System.Windows.RoutedEventArgs)">
+            <summary>
+            Handles the movement back to the test assemblies list.
+            </summary>
+            <param name="sender">The source object.</param>
+            <param name="e">The event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileTestPage.OnMoveBackToTestClassesClick(System.Object,System.Windows.RoutedEventArgs)">
+            <summary>
+            Handles the movement back to the test classes list.
+            </summary>
+            <param name="sender">The source object.</param>
+            <param name="e">The event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileTestPage.OnMoveBackToTestMethodsClick(System.Object,System.Windows.RoutedEventArgs)">
+            <summary>
+            Handles the movement back to the test methods list.
+            </summary>
+            <param name="sender">The source object.</param>
+            <param name="e">The event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileTestPage.OnTestAssemblySelectionChanged(System.Object,System.Windows.Controls.SelectionChangedEventArgs)">
+            <summary>
+            Handles the selection of a test assembly.
+            </summary>
+            <param name="sender">The source object.</param>
+            <param name="e">The event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileTestPage.OnTestClassSelectionChanged(System.Object,System.Windows.Controls.SelectionChangedEventArgs)">
+            <summary>
+            Handles the selection of a test class.
+            </summary>
+            <param name="sender">The source object.</param>
+            <param name="e">The event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileTestPage.OnTestMethodsSelectionChanged(System.Object,System.Windows.Controls.SelectionChangedEventArgs)">
+            <summary>
+            Handles the selection of a test method.
+            </summary>
+            <param name="sender">The source object.</param>
+            <param name="e">The event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileTestPage.NavigateBack">
+            <summary>
+            Requests navigation back a page.
+            </summary>
+            <returns>A value indicating whether the operation was successful.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.MobileTestPage.InitializeComponent">
+            <summary>
+            InitializeComponent
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.MobileTestPage.TestPanel">
+            <summary>
+            Gets the test surface, a dynamic Panel that removes its children 
+            elements after each test completes.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.MobileTestPage.UnitTestHarness">
+            <summary>
+            Gets the unit test harness instance.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.ResultsTreeView">
+            <summary>
+            A derived TreeView control specific to the application needs for
+            showing results in real-time.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Controls.TreeView">
+            <summary>
+            Represents a control that displays hierarchical data in a tree structure
+            that has items that can expand and collapse.
+            </summary>
+            <QualityBand>Stable</QualityBand>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Controls.IUpdateVisualState">
+            <summary>
+            The IUpdateVisualState interface is used to provide the
+            InteractionHelper with access to the type's UpdateVisualState method.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.IUpdateVisualState.UpdateVisualState(System.Boolean)">
+            <summary>
+            Update the visual state of the control.
+            </summary>
+            <param name="useTransitions">
+            A value indicating whether to automatically generate transitions to
+            the new state, or instantly transition to the new state.
+            </param>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.TreeView._allowWrite">
+            <summary>
+            A value indicating whether a read-only dependency property change
+            handler should allow the value to be set.  This is used to ensure
+            that read-only properties cannot be changed via SetValue, etc.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.TreeView._ignorePropertyChange">
+            <summary>
+            A value indicating whether a dependency property change handler
+            should ignore the next change notification.  This is used to reset
+            the value of properties without performing any of the actions in
+            their change handlers.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.TreeView.SelectedItemProperty">
+            <summary>
+            Identifies the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeView.SelectedItem" />
+            dependency property.
+            </summary>
+            <value>
+            The identifier for the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeView.SelectedItem" />
+            property.
+            </value>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.OnSelectedItemPropertyChanged(System.Windows.DependencyObject,System.Windows.DependencyPropertyChangedEventArgs)">
+            <summary>
+            SelectedItemProperty property changed handler.
+            </summary>
+            <param name="d">TreeView that changed its SelectedItem.</param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.TreeView.SelectedValueProperty">
+            <summary>
+            Identifies the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeView.SelectedValue" />
+            dependency property.
+            </summary>
+            <value>
+            The identifier for the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeView.SelectedValue" />
+            dependency property.
+            </value>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.OnSelectedValuePropertyChanged(System.Windows.DependencyObject,System.Windows.DependencyPropertyChangedEventArgs)">
+            <summary>
+            SelectedValueProperty property changed handler.
+            </summary>
+            <param name="d">TreeView that changed its SelectedValue.</param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.TreeView.SelectedValuePathProperty">
+            <summary>
+            Identifies the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeView.SelectedValuePath" />
+            dependency property.
+            </summary>
+            <value>
+            The identifier for the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeView.SelectedValuePath" />
+            dependency property.
+            </value>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.OnSelectedValuePathPropertyChanged(System.Windows.DependencyObject,System.Windows.DependencyPropertyChangedEventArgs)">
+            <summary>
+            SelectedValuePathProperty property changed handler.
+            </summary>
+            <param name="d">TreeView that changed its SelectedValuePath.</param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.TreeView.ItemContainerStyleProperty">
+            <summary>
+            Identifies the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeView.ItemContainerStyle" />
+            dependency property.
+            </summary>
+            <value>
+            The identifier for the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeView.ItemContainerStyle" />
+            dependency property.
+            </value>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.OnItemContainerStylePropertyChanged(System.Windows.DependencyObject,System.Windows.DependencyPropertyChangedEventArgs)">
+            <summary>
+            ItemContainerStyleProperty property changed handler.
+            </summary>
+            <param name="d">
+            TreeView that changed its ItemContainerStyle.
+            </param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.#ctor">
+            <summary>
+            Initializes a new instance of the
+            <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeView" /> class.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.OnCreateAutomationPeer">
+            <summary>
+            Returns a
+            <see cref="T:System.Windows.Automation.Peers.TreeViewAutomationPeer" />
+            for use by the Silverlight automation infrastructure.
+            </summary>
+            <returns>
+            A
+            <see cref="T:System.Windows.Automation.Peers.TreeViewAutomationPeer" />
+            for the <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeView" /> control.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.OnApplyTemplate">
+            <summary>
+            Builds the visual tree for the
+            <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeView" /> control when a new
+            control template is applied.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.Microsoft#Silverlight#Testing#Controls#IUpdateVisualState#UpdateVisualState(System.Boolean)">
+            <summary>
+            Update the visual state of the TreeView.
+            </summary>
+            <param name="useTransitions">
+            A value indicating whether to use transitions when updating the
+            visual state.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.GetContainerForItemOverride">
+            <summary>
+            Creates a <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" /> to
+            display content.
+            </summary>
+            <returns>
+            A <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" /> to use as a
+            container for content.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.IsItemItsOwnContainerOverride(System.Object)">
+            <summary>
+            Determines whether the specified item is a
+            <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" />, which is the
+            default container for items in the
+            <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeView" /> control.
+            </summary>
+            <param name="item">The object to evaluate.</param>
+            <returns>
+            True if the item is a
+            <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" />; otherwise,
+            false.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.PrepareContainerForItemOverride(System.Windows.DependencyObject,System.Object)">
+            <summary>
+            Prepares the container element to display the specified item.
+            </summary>
+            <param name="element">
+            The container element used to display the specified item.
+            </param>
+            <param name="item">The item to display.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.ClearContainerForItemOverride(System.Windows.DependencyObject,System.Object)">
+            <summary>
+            Removes all templates, styles, and bindings for the object displayed
+            as a <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" />.
+            </summary>
+            <param name="element">
+            The <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" /> element to
+            clear.
+            </param>
+            <param name="item">
+            The item that is contained in the
+            <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" />.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.OnItemsChanged(System.Collections.Specialized.NotifyCollectionChangedEventArgs)">
+            <summary>
+            Makes adjustments to the
+            <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeView" /> control when the
+            value of the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.ItemsControl.Items" /> property
+            changes.
+            </summary>
+            <param name="e">
+            A
+            <see cref="T:System.Collections.Specialized.NotifyCollectionChangedEventArgs" />
+            that contains data about the change.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.CheckForSelectedDescendents(Microsoft.Silverlight.Testing.Controls.TreeViewItem)">
+            <summary>
+            Select any descendents when adding new TreeViewItems to a TreeView.
+            </summary>
+            <param name="item">The added item.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.PropagateKeyDown(System.Windows.Input.KeyEventArgs)">
+            <summary>
+            Propagate OnKeyDown messages from the root TreeViewItems to their
+            TreeView.
+            </summary>
+            <param name="e">Event arguments.</param>
+            <remarks>
+            Because Silverlight's ScrollViewer swallows many useful key events
+            (which it can ignore on WPF if you override HandlesScrolling or use
+            an internal only variable in Silverlight), the root TreeViewItems
+            explicitly propagate KeyDown events to their parent TreeView.
+            </remarks>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.OnKeyDown(System.Windows.Input.KeyEventArgs)">
+            <summary>
+            Provides handling for the
+            <see cref="E:System.Windows.UIElement.KeyDown" /> event when a key
+            is pressed while the control has focus.
+            </summary>
+            <param name="e">
+            A <see cref="T:System.Windows.Input.KeyEventArgs" /> that contains
+            the event data.
+            </param>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="e " />is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.HandleScrollKeys(System.Windows.Input.Key)">
+            <summary>
+            Handle keys related to scrolling.
+            </summary>
+            <param name="key">The key to handle.</param>
+            <returns>A value indicating whether the key was handled.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.HandleScrollByPage(System.Boolean)">
+            <summary>
+            Handle scrolling a page up or down.
+            </summary>
+            <param name="up">
+            A value indicating whether the page should be scrolled up.
+            </param>
+            <returns>
+            A value indicating whether the scroll was handled.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.OnKeyUp(System.Windows.Input.KeyEventArgs)">
+            <summary>
+            Provides handling for the KeyUp event.
+            </summary>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.OnMouseEnter(System.Windows.Input.MouseEventArgs)">
+            <summary>
+            Provides handling for the MouseEnter event.
+            </summary>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.OnMouseLeave(System.Windows.Input.MouseEventArgs)">
+            <summary>
+            Provides handling for the MouseLeave event.
+            </summary>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.OnMouseMove(System.Windows.Input.MouseEventArgs)">
+            <summary>
+            Provides handling for the MouseMove event.
+            </summary>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.OnMouseLeftButtonDown(System.Windows.Input.MouseButtonEventArgs)">
+            <summary>
+            Provides handling for the
+            <see cref="E:System.Windows.UIElement.MouseLeftButtonDown" />
+            event.
+            </summary>
+            <param name="e">
+            A <see cref="T:System.Windows.Input.MouseButtonEventArgs" /> that
+            contains the event data.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.OnMouseLeftButtonUp(System.Windows.Input.MouseButtonEventArgs)">
+            <summary>
+            Provides handling for the MouseLeftButtonUp event.
+            </summary>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.HandleMouseButtonDown">
+            <summary>
+            Provides handling for mouse button events.
+            </summary>
+            <returns>A value indicating whether the event was handled.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.OnGotFocus(System.Windows.RoutedEventArgs)">
+            <summary>
+            Provides handling for the GotFocus event.
+            </summary>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.OnLostFocus(System.Windows.RoutedEventArgs)">
+            <summary>
+            Provides handling for the LostFocus event.
+            </summary>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.OnSelectedItemChanged(System.Windows.RoutedPropertyChangedEventArgs{System.Object})">
+            <summary>
+            Raises the
+            <see cref="E:Microsoft.Silverlight.Testing.Controls.TreeView.SelectedItemChanged" />
+            event when the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeView.SelectedItem" />
+            property value changes.
+            </summary>
+            <param name="e">
+            A <see cref="T:System.Windows.RoutedPropertyChangedEventArgs`1" />
+            that contains the event data.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.ChangeSelection(System.Object,Microsoft.Silverlight.Testing.Controls.TreeViewItem,System.Boolean)">
+            <summary>
+            Change whether a TreeViewItem is selected.
+            </summary>
+            <param name="itemOrContainer">
+            Item whose selection is changing.
+            </param>
+            <param name="container">
+            Container of the item whose selection is changing.
+            </param>
+            <param name="selected">
+            A value indicating whether the TreeViewItem is selected.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.UpdateSelectedValue(System.Object)">
+            <summary>
+            Update the selected value of the of the TreeView based on the value
+            of the currently selected TreeViewItem and the SelectedValuePath.
+            </summary>
+            <param name="item">
+            Value of the currently selected TreeViewItem.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.SelectFirstItem">
+            <summary>
+            Select the first item of the TreeView.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.FocusFirstItem">
+            <summary>
+            Focus the first item in the TreeView.
+            </summary>
+            <returns>A value indicating whether the item was focused.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeView.FocusLastItem">
+            <summary>
+            Focus the last item in the TreeView.
+            </summary>
+            <returns>A value indicating whether the item was focused.</returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeView.SelectedItem">
+            <summary>
+            Gets the selected item in a
+            <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeView" />.
+            </summary>
+            <value>
+            The currently selected item or null if no item is selected. The
+            default value is null.
+            </value>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeView.SelectedValue">
+            <summary>
+            Gets the value of the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeView.SelectedItem" />
+            property that is specified by the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeView.SelectedValuePath" />
+            property.
+            </summary>
+            <value>
+            The value of the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeView.SelectedItem" />
+            property that is specified by the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeView.SelectedValuePath" />
+            property, or null if no item is selected. The default value is null.
+            </value>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeView.SelectedValuePath">
+            <summary>
+            Gets or sets the property path that is used to get the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeView.SelectedValue" />
+            property of the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeView.SelectedItem" />
+            property in a <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeView" />.
+            </summary>
+            <value>
+            The property path that is used to get the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeView.SelectedValue" />
+            property of the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeView.SelectedItem" />
+            property in a <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeView" />. The
+            default value is <see cref="F:System.String.Empty" />.
+            </value>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeView.ItemContainerStyle">
+            <summary>
+            Gets or sets the <see cref="T:System.Windows.Style" /> that is
+            applied to the container element generated for each item.
+            </summary>
+            <value>
+            The <see cref="T:System.Windows.Style" /> applied to the container
+            element that contains each item.
+            </value>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeView.SelectedContainer">
+            <summary>
+            Gets the currently selected TreeViewItem container.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeView.IsSelectedContainerHookedUp">
+            <summary>
+            Gets a value indicating whether the currently selected TreeViewItem
+            container is properly hooked up to the TreeView.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeView.IsSelectionChangeActive">
+            <summary>
+            Gets or sets a value indicating whether the selected item is
+            currently being changed.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeView.ItemsControlHelper">
+            <summary>
+            Gets the ItemsControlHelper that is associated with this control.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeView.Interaction">
+            <summary>
+            Gets the helper that provides all of the standard
+            interaction functionality.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeView.IsControlKeyDown">
+            <summary>
+            Gets a value indicating whether the Control key is currently
+            pressed.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeView.IsShiftKeyDown">
+            <summary>
+            Gets a value indicating whether the Shift key is currently pressed.
+            </summary>
+        </member>
+        <member name="E:Microsoft.Silverlight.Testing.Controls.TreeView.SelectedItemChanged">
+            <summary>
+            Occurs when the value of the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeView.SelectedItem" />
+            property changes.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.ResultsTreeView.GetContainerForItemOverride">
+            <summary>
+            Overrides the item to allow for simple binding to the expanded
+            property on the item.
+            </summary>
+            <returns>Returns a new container for an item.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.ResultsTreeView.GetSharedContainer">
+            <summary>
+            This method returns the container with an expanded binding.
+            </summary>
+            <returns>Returns the container with an expanded binding.</returns>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.ResultsTreeViewItem">
+            <summary>
+            A derived TreeViewItem for IsExpanded binding.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem">
+            <summary>
+            Provides a selectable item for the
+            <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeView" /> control.
+            </summary>
+            <QualityBand>Stable</QualityBand>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl">
+            <summary>
+            Represents a control that contains a collection of items and a header.
+            </summary>
+            <QualityBand>Stable</QualityBand>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.HeaderProperty">
+            <summary>
+            Identifies the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.Header" />
+            dependency property.
+            </summary>
+            <value>
+            The identifier for the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.Header" />
+            dependency property.
+            </value>
+            <remarks>
+            Note: WPF defines this property via a call to AddOwner of
+            HeaderedContentControl's HeaderProperty.
+            </remarks>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.OnHeaderPropertyChanged(System.Windows.DependencyObject,System.Windows.DependencyPropertyChangedEventArgs)">
+            <summary>
+            HeaderProperty property changed handler.
+            </summary>
+            <param name="d">
+            HeaderedItemsControl that changed its Header.
+            </param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.HeaderTemplateProperty">
+            <summary>
+            Identifies the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.HeaderTemplate" />
+            dependency property.
+            </summary>
+            <value>
+            The identifier for the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.HeaderTemplate" />
+            dependency property.
+            </value>
+            <remarks>
+            Note: WPF defines this property via a call to AddOwner of
+            HeaderedContentControl's HeaderTemplateProperty.
+            </remarks>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.OnHeaderTemplatePropertyChanged(System.Windows.DependencyObject,System.Windows.DependencyPropertyChangedEventArgs)">
+            <summary>
+            HeaderTemplateProperty property changed handler.
+            </summary>
+            <param name="d">
+            HeaderedItemsControl that changed its HeaderTemplate.
+            </param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.ItemContainerStyleProperty">
+            <summary>
+            Identifies the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.ItemContainerStyle" />
+            dependency property.
+            </summary>
+            <value>
+            The identifier for the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.ItemContainerStyle" />
+            dependency property.
+            </value>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.OnItemContainerStylePropertyChanged(System.Windows.DependencyObject,System.Windows.DependencyPropertyChangedEventArgs)">
+            <summary>
+            ItemContainerStyleProperty property changed handler.
+            </summary>
+            <param name="d">
+            HeaderedItemsControl that changed its ItemContainerStyle.
+            </param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.#ctor">
+            <summary>
+            Initializes a new instance of the
+            <see cref="T:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl" /> class.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.OnHeaderChanged(System.Object,System.Object)">
+            <summary>
+            Called when the value of the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.Header" />
+            property changes.
+            </summary>
+            <param name="oldHeader">
+            The old value of the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.Header" />
+            property.
+            </param>
+            <param name="newHeader">
+            The new value of the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.Header" />
+            property.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.OnHeaderTemplateChanged(System.Windows.DataTemplate,System.Windows.DataTemplate)">
+            <summary>
+            Called when the value of the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.HeaderTemplate" />
+            property changes.
+            </summary>
+            <param name="oldHeaderTemplate">
+            The old value of the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.HeaderTemplate" />
+            property.
+            </param>
+            <param name="newHeaderTemplate">
+            The new value of the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.HeaderTemplate" />
+            property.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.OnApplyTemplate">
+            <summary>
+            Builds the visual tree for the
+            <see cref="T:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl" /> when a
+            new template is applied.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.PrepareContainerForItemOverride(System.Windows.DependencyObject,System.Object)">
+            <summary>
+            Prepares the specified element to display the specified item.
+            </summary>
+            <param name="element">
+            The container element used to display the specified item.
+            </param>
+            <param name="item">The content to display.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.PreparePrepareHeaderedItemsControlContainerForItemOverride(System.Windows.DependencyObject,System.Object,System.Windows.Controls.ItemsControl,System.Windows.Style)">
+            <summary>
+            Prepares the specified container to display the specified item.
+            </summary>
+            <param name="element">
+            Container element used to display the specified item.
+            </param>
+            <param name="item">Specified item to display.</param>
+            <param name="parent">The parent ItemsControl.</param>
+            <param name="parentItemContainerStyle">
+            The ItemContainerStyle for the parent ItemsControl.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.PrepareHeaderedItemsControlContainer(Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl,System.Object,System.Windows.Controls.ItemsControl,System.Windows.Style)">
+            <summary>
+            Prepare a PrepareHeaderedItemsControlContainer container for an
+            item.
+            </summary>
+            <param name="control">Container to prepare.</param>
+            <param name="item">Item to be placed in the container.</param>
+            <param name="parentItemsControl">The parent ItemsControl.</param>
+            <param name="parentItemContainerStyle">
+            The ItemContainerStyle for the parent ItemsControl.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.HasDefaultValue(System.Windows.Controls.Control,System.Windows.DependencyProperty)">
+            <summary>
+            Check whether a control has the default value for a property.
+            </summary>
+            <param name="control">The control to check.</param>
+            <param name="property">The property to check.</param>
+            <returns>
+            True if the property has the default value; false otherwise.
+            </returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.HeaderIsItem">
+            <summary>
+            Gets or sets a value indicating whether the Header property has been
+            set to the item of an ItemsControl.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.Header">
+            <summary>
+            Gets or sets the item that labels the control.
+            </summary>
+            <value>
+            The item that labels the control. The default value is null.
+            </value>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.HeaderTemplate">
+            <summary>
+            Gets or sets a data template that is used to display the contents of
+            the control's header.
+            </summary>
+            <value>
+            Gets or sets a data template that is used to display the contents of
+            the control's header. The default is null.
+            </value>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.ItemContainerStyle">
+            <summary>
+            Gets or sets the <see cref="T:System.Windows.Style" /> that is
+            applied to the container element generated for each item.
+            </summary>
+            <value>
+            The <see cref="T:System.Windows.Style" /> that is applied to the
+            container element generated for each item. The default is null.
+            </value>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl.ItemsControlHelper">
+            <summary>
+            Gets the ItemsControlHelper that is associated with this control.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.TreeViewItem.ExpanderButtonName">
+            <summary>
+            The name of the ExpanderButton template part.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.TreeViewItem.HeaderName">
+            <summary>
+            The name of the Header template part.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.TreeViewItem._expanderButton">
+            <summary>
+            The ExpanderButton template part is used to expand and collapse the
+            TreeViewItem.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.TreeViewItem._headerElement">
+            <summary>
+            The Header template part is used to distinguish the bound Header
+            content of the TreeViewItem.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.TreeViewItem._expansionStateGroup">
+            <summary>
+            The ExpansionStates visual state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.TreeViewItem._allowWrite">
+            <summary>
+            A value indicating whether a read-only dependency property change
+            handler should allow the value to be set.  This is used to ensure
+            that read-only properties cannot be changed via SetValue, etc.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.TreeViewItem.HasItemsProperty">
+            <summary>
+            Identifies the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.HasItems" />
+            dependency property.
+            </summary>
+            <value>
+            The identifier for the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.HasItems" />
+            dependency property.
+            </value>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.OnHasItemsPropertyChanged(System.Windows.DependencyObject,System.Windows.DependencyPropertyChangedEventArgs)">
+            <summary>
+            HasItemsProperty property changed handler.
+            </summary>
+            <param name="d">TreeViewItem that changed its HasItems.</param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.TreeViewItem.IsExpandedProperty">
+            <summary>
+            Identifies the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.IsExpanded" />
+            dependency property.
+            </summary>
+            <value>
+            The identifier for the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.IsExpanded" />
+            dependency property.
+            </value>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.OnIsExpandedPropertyChanged(System.Windows.DependencyObject,System.Windows.DependencyPropertyChangedEventArgs)">
+            <summary>
+            IsExpandedProperty property changed handler.
+            </summary>
+            <param name="d">TreeViewItem that changed its IsExpanded.</param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.TreeViewItem.IsSelectedProperty">
+            <summary>
+            Identifies the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.IsSelected" />
+            dependency property.
+            </summary>
+            <value>
+            The identifier for the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.IsSelected" />
+            dependency property.
+            </value>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.OnIsSelectedPropertyChanged(System.Windows.DependencyObject,System.Windows.DependencyPropertyChangedEventArgs)">
+            <summary>
+            IsSelectedProperty property changed handler.
+            </summary>
+            <param name="d">TreeViewItem that changed its IsSelected.</param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.TreeViewItem.IsSelectionActiveProperty">
+            <summary>
+            Identifies the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.IsSelectionActive" />
+            dependency property.
+            </summary>
+            <value>
+            The identifier for the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.IsSelectionActive" />
+            dependency property.
+            </value>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.OnIsSelectionActivePropertyChanged(System.Windows.DependencyObject,System.Windows.DependencyPropertyChangedEventArgs)">
+            <summary>
+            IsSelectionActiveProperty property changed handler.
+            </summary>
+            <param name="d">TreeViewItem that changed its IsSelectionActive.</param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.TreeViewItem._parentItemsControl">
+            <summary>
+            A reference to the parent ItemsControl of a TreeViewItem.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.#ctor">
+            <summary>
+            Initializes a new instance of the
+            <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" /> class.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.OnCreateAutomationPeer">
+            <summary>
+            Returns a
+            <see cref="T:System.Windows.Automation.Peers.TreeViewItemAutomationPeer" />
+            for use by the Silverlight automation infrastructure.
+            </summary>
+            <returns>
+            A
+            <see cref="T:System.Windows.Automation.Peers.TreeViewItemAutomationPeer" />
+            object for the
+            <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" />.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.OnApplyTemplate">
+            <summary>
+            Builds the visual tree for the
+            <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" /> control when a
+            new control template is applied.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.OnExpansionStateGroupStateChanged(System.Object,System.Windows.VisualStateChangedEventArgs)">
+            <summary>
+            Provides handling for the ExpansionStates CurrentChanged event.
+            </summary>
+            <param name="sender">The ExpansionState VisualStateGroup.</param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.BringIntoView">
+            <summary>
+            Scroll the TreeViewItem into view.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.Microsoft#Silverlight#Testing#Controls#IUpdateVisualState#UpdateVisualState(System.Boolean)">
+            <summary>
+            Update the visual state of the control.
+            </summary>
+            <param name="useTransitions">
+            A value indicating whether to automatically generate transitions to
+            the new state, or instantly transition to the new state.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.UpdateVisualState(System.Boolean)">
+            <summary>
+            Update the visual state of the control.
+            </summary>
+            <param name="useTransitions">
+            A value indicating whether to automatically generate transitions to
+            the new state, or instantly transition to the new state.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.GetContainerForItemOverride">
+            <summary>
+            Creates a <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" /> to
+            display content.
+            </summary>
+            <returns>
+            A <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" /> to use as a
+            container for content.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.IsItemItsOwnContainerOverride(System.Object)">
+            <summary>
+            Determines whether an object is a
+            <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" />.
+            </summary>
+            <param name="item">The object to evaluate.</param>
+            <returns>
+            True if <paramref name="item" /> is a
+            <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" />; otherwise,
+            false.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.PrepareContainerForItemOverride(System.Windows.DependencyObject,System.Object)">
+            <summary>
+            Prepares the specified container element to display the specified
+            item.
+            </summary>
+            <param name="element">
+            Container element used to display the specified item.
+            </param>
+            <param name="item">The item to display.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.ClearContainerForItemOverride(System.Windows.DependencyObject,System.Object)">
+            <summary>
+            Removes all templates, styles, and bindings for the object displayed
+            as a <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" />.
+            </summary>
+            <param name="element">
+            The <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" /> element to
+            clear.
+            </param>
+            <param name="item">
+            The item that is contained in the
+            <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" />.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.OnItemsChanged(System.Collections.Specialized.NotifyCollectionChangedEventArgs)">
+            <summary>
+            Makes adjustments to the
+            <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" /> when the value
+            of the <see cref="P:Microsoft.Silverlight.Testing.Controls.ItemsControl.Items" />
+            property changes.
+            </summary>
+            <param name="e">
+            A
+            <see cref="T:System.Collections.Specialized.NotifyCollectionChangedEventArgs" />
+            that contains data about the change.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.RaiseEvent(System.Windows.RoutedEventHandler,System.Windows.RoutedEventArgs)">
+            <summary>
+            Raise a RoutedEvent.
+            </summary>
+            <param name="handler">Event handler.</param>
+            <param name="args">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.OnExpanded(System.Windows.RoutedEventArgs)">
+            <summary>
+            Raises an
+            <see cref="E:Microsoft.Silverlight.Testing.Controls.TreeViewItem.Expanded" /> event
+            when the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.IsExpanded" />
+            property changes from false to true.
+            </summary>
+            <param name="e">
+            A <see cref="T:System.Windows.RoutedEventArgs" /> that contains the
+            event data.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.OnCollapsed(System.Windows.RoutedEventArgs)">
+            <summary>
+            Raises a
+            <see cref="E:Microsoft.Silverlight.Testing.Controls.TreeViewItem.Collapsed" />
+            event when the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.IsExpanded" />
+            property changes from true to false.
+            </summary>
+            <param name="e">
+            A <see cref="T:System.Windows.RoutedEventArgs" /> that contains the
+            event data.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.ToggleExpanded(System.Windows.RoutedEventHandler,System.Windows.RoutedEventArgs)">
+            <summary>
+            Handle changes to the IsExpanded property.
+            </summary>
+            <param name="handler">Event handler.</param>
+            <param name="args">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.OnSelected(System.Windows.RoutedEventArgs)">
+            <summary>
+            Raises the
+            <see cref="E:Microsoft.Silverlight.Testing.Controls.TreeViewItem.Selected" /> event
+            when the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.IsSelected" />
+            property changes from false to true.
+            </summary>
+            <param name="e">
+            A <see cref="T:System.Windows.RoutedEventArgs" /> that contains the
+            event data.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.OnUnselected(System.Windows.RoutedEventArgs)">
+            <summary>
+            Raises the
+            <see cref="E:Microsoft.Silverlight.Testing.Controls.TreeViewItem.Unselected" />
+            event when the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.IsSelected" />
+            property changes from true to false.
+            </summary>
+            <param name="e">
+            A <see cref="T:System.Windows.RoutedEventArgs" /> that contains the
+            event data.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.OnGotFocus(System.Windows.RoutedEventArgs)">
+            <summary>
+            Provides handling for the
+            <see cref="E:System.Windows.UIElement.GotFocus" /> event.
+            </summary>
+            <param name="e">
+            A <see cref="T:System.Windows.RoutedEventArgs" /> that contains the
+            event data.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.OnLostFocus(System.Windows.RoutedEventArgs)">
+            <summary>
+            Provides handling for the
+            <see cref="E:System.Windows.UIElement.LostFocus" /> event.
+            </summary>
+            <param name="e">
+            A <see cref="T:System.Windows.RoutedEventArgs" /> that contains the
+            event data.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.OnExpanderGotFocus(System.Object,System.Windows.RoutedEventArgs)">
+            <summary>
+            Handle the ExpanderButton's GotFocus event.
+            </summary>
+            <param name="sender">The ExpanderButton.</param>
+            <param name="e">Event Arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.OnMouseEnter(System.Windows.Input.MouseEventArgs)">
+            <summary>
+            Provides handling for the
+            <see cref="E:System.Windows.UIElement.MouseEnter" /> event.
+            </summary>
+            <param name="e">
+            A <see cref="T:System.Windows.Input.MouseEventArgs" /> that contains
+            the event data.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.OnMouseLeave(System.Windows.Input.MouseEventArgs)">
+            <summary>
+            Provides handling for the
+            <see cref="E:System.Windows.UIElement.MouseLeave" /> event.
+            </summary>
+            <param name="e">
+            A <see cref="T:System.Windows.Input.MouseEventArgs" /> that contains
+            the event data.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.OnHeaderMouseLeftButtonDown(System.Object,System.Windows.Input.MouseButtonEventArgs)">
+            <summary>
+            Provides handling for the Header's MouseLeftButtonDown event.
+            </summary>
+            <param name="sender">The Header template part.</param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.OnExpanderClick(System.Object,System.Windows.RoutedEventArgs)">
+            <summary>
+            Provides handling for the ExpanderButton's Click event.
+            </summary>
+            <param name="sender">The ExpanderButton.</param>
+            <param name="e">Event Arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.OnMouseLeftButtonDown(System.Windows.Input.MouseButtonEventArgs)">
+            <summary>
+            Provides handling for the
+            <see cref="E:System.Windows.UIElement.MouseLeftButtonDown" /> event.
+            </summary>
+            <param name="e">
+            A <see cref="T:System.Windows.Input.MouseButtonEventArgs" /> that
+            contains the event data.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.OnMouseLeftButtonUp(System.Windows.Input.MouseButtonEventArgs)">
+            <summary>
+            Provides handling for the
+            <see cref="E:System.Windows.UIElement.MouseLeftButtonUp" /> event.
+            </summary>
+            <param name="e">
+            A <see cref="T:System.Windows.Input.MouseButtonEventArgs" /> that
+            contains the event data.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.OnKeyDown(System.Windows.Input.KeyEventArgs)">
+            <summary>
+            Provides handling for the
+            <see cref="E:System.Windows.UIElement.KeyDown" /> event when the
+            <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" /> has focus.
+            </summary>
+            <param name="e">
+            A <see cref="T:System.Windows.Input.KeyEventArgs" /> that contains
+            the event data.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.HandleDownKey">
+            <summary>
+            Try moving the focus down from the selected item.
+            </summary>
+            <returns>
+            A value indicating whether the focus was successfully moved.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.OnKeyUp(System.Windows.Input.KeyEventArgs)">
+            <summary>
+            Provides handling for the
+            <see cref="E:System.Windows.UIElement.KeyUp" /> event.
+            </summary>
+            <param name="e">
+            A <see cref="T:System.Windows.Input.KeyEventArgs" /> that contains
+            the event data.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.HandleUpKey">
+            <summary>
+            Try moving the focus up from the selected item.
+            </summary>
+            <returns>
+            A value indicating whether the focus was successfully moved.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.HandleScrollByPage(System.Boolean,System.Windows.Controls.ScrollViewer,System.Double,System.Double,System.Double,System.Double@)">
+            <summary>
+            Handle scrolling a page up or down.
+            </summary>
+            <param name="up">
+            A value indicating whether the page should be scrolled up.
+            </param>
+            <param name="scrollHost">The ScrollViewer being scrolled.</param>
+            <param name="viewportHeight">The height of the viewport.</param>
+            <param name="top">The top of item to start from.</param>
+            <param name="bottom">The bottom of the item to start from.</param>
+            <param name="currentDelta">The height of this item.</param>
+            <returns>
+            A value indicating whether the scroll was handled.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.CalculateDelta(System.Boolean,System.Windows.FrameworkElement,System.Windows.Controls.ScrollViewer,System.Double,System.Double,System.Double@)">
+            <summary>
+            Calculate the distance between this TreeViewItem and the item being
+            paged from.
+            </summary>
+            <param name="up">
+            A value indicating whether the page should be scrolled up.
+            </param>
+            <param name="element">The element being paged from.</param>
+            <param name="scrollHost">The ScrollViewer being scrolled.</param>
+            <param name="top">The top of item to start from.</param>
+            <param name="bottom">The bottom of the item to start from.</param>
+            <param name="closeEdge">
+            The distance between the top/bottom of one item to the other.
+            </param>
+            <returns>
+            A value indicating whether the scroll was handled.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.Select(System.Boolean)">
+            <summary>
+            Change the selected status of the TreeViewItem.
+            </summary>
+            <param name="selected">
+            A value indicating whether the TreeViewItem is selected.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.UpdateContainsSelection(System.Boolean)">
+            <summary>
+            Update the ancestors of this item when it changes selection.
+            </summary>
+            <param name="selected">
+            A value indicating whether the item is selected.
+            </param>
+            <remarks>
+            Unselection updates need to occur before selection updates because
+            the old and new selected items may share a partial path.
+            </remarks>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.AllowKeyHandleEvent">
+            <summary>
+            Determine whether the TreeViewItem should be allowed to handle a key
+            event.
+            </summary>
+            <returns>
+            A value indicating whether the key event should be handled.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.FocusDown">
+            <summary>
+            Navigate the focus to the next TreeViewItem below this item.
+            </summary>
+            <returns>
+            A value indicating whether the focus was navigated.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.FocusInto">
+            <summary>
+            Navigate the focus to the very last TreeViewItem descendent of the
+            this item.
+            </summary>
+            <returns>
+            A value indicating whether the focus was navigated.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.FindNextFocusableItem(System.Boolean)">
+            <summary>
+            Find the next focusable TreeViewItem below this item.
+            </summary>
+            <param name="recurse">
+            A value indicating whether the item should recurse into its child
+            items when searching for the next focusable TreeViewItem.
+            </param>
+            <returns>The next focusable TreeViewItem below this item.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.FindLastFocusableItem">
+            <summary>
+            Find the last focusable TreeViewItem contained by this item.
+            </summary>
+            <returns>
+            The last focusable TreeViewItem contained by this item.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItem.FindPreviousFocusableItem">
+            <summary>
+            Find the previous focusable TreeViewItem above this item.
+            </summary>
+            <returns>
+            The previous focusable TreeViewItem above this item.
+            </returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.ExpanderButton">
+            <summary>
+            Gets or sets the ExpanderButton template part is used to expand and
+            collapse the TreeViewItem.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.HeaderElement">
+            <summary>
+            Gets the Header template part that is used to distinguish the bound
+            Header content of the TreeViewItem.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.ExpansionStateGroup">
+            <summary>
+            Gets or sets the ExpansionStates visual state group.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.IgnorePropertyChange">
+            <summary>
+            Gets or sets a value indicating whether a dependency property change
+            handler should ignore the next change notification.  This is used to
+            reset the value of properties without performing any of the actions
+            in their change handlers.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.HasItems">
+            <summary>
+            Gets a value indicating whether this
+            <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" /> contains
+            items.
+            </summary>
+            <value>
+            True if this <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" />
+            contains items; otherwise, false. The default is false.
+            </value>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.IsExpanded">
+            <summary>
+            Gets or sets a value indicating whether the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.ItemsControl.Items" />
+            contained by this
+            <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" /> are expanded
+            or collapsed.
+            </summary>
+            <value>
+            True to indicate the contents of the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.ItemsControl.Items" />
+            collection are expanded; false to indicate the items are collapsed.
+            The default is false.
+            </value>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.IsSelected">
+            <summary>
+            Gets or sets a value indicating whether this
+            <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" /> is selected.
+            </summary>
+            <value>
+            True if this <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" />
+            is selected; otherwise, false. The default is false.
+            </value>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.IsSelectionActive">
+            <summary>
+            Gets a value indicating whether the
+            <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" /> has focus.
+            </summary>
+            <value>
+            True if this <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" />
+            has focus; otherwise, false. The default is false.
+            </value>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.Interaction">
+            <summary>
+            Gets the helper that provides all of the standard
+            interaction functionality.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.ContainsSelection">
+            <summary>
+            Gets or sets a value indicating whether the TreeView's currently
+            selected item is a descendent of this TreeViewItem.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.CancelGotFocusBubble">
+            <summary>
+            Gets or sets a value indicating whether the TreeViewItem should
+            ignore the next GotFocus event it receives because it has already
+            been handled by one of its children.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.RequiresContainsSelectionUpdate">
+            <summary>
+            Gets or sets a value indicating whether checking ContainsSelection
+            should actually perform the update notifications because the item
+            was selected before it was in the visual tree.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.UserInitiatedExpansion">
+            <summary>
+            Gets or sets a value indicating whether a user initiated action
+            caused the IsExpanded property to be set.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.ParentItemsControl">
+            <summary>
+            Gets or sets a reference to the parent ItemsControl of a
+            TreeViewItem.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.ParentTreeViewItem">
+            <summary>
+            Gets a reference to the parent TreeViewItem of this TreeViewItem.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.ParentTreeView">
+            <summary>
+            Gets a reference to the parent TreeView of the TreeViewItem.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.IsRoot">
+            <summary>
+            Gets a value indicating whether this TreeViewItem is a root of the
+            TreeView.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.CanExpandOnInput">
+            <summary>
+            Gets a value indicating whether the TreeViewItem can expand when it
+            receives appropriate user input.
+            </summary>
+        </member>
+        <member name="E:Microsoft.Silverlight.Testing.Controls.TreeViewItem.Collapsed">
+            <summary>
+            Occurs when the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.IsExpanded" />
+            property changes from true to false.
+            </summary>
+        </member>
+        <member name="E:Microsoft.Silverlight.Testing.Controls.TreeViewItem.Expanded">
+            <summary>
+            Occurs when the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.IsExpanded" />
+            property changes from false to true.
+            </summary>
+        </member>
+        <member name="E:Microsoft.Silverlight.Testing.Controls.TreeViewItem.Selected">
+            <summary>
+            Occurs when the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.IsSelected" />
+            property of a <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" />
+            changes from false to true.
+            </summary>
+        </member>
+        <member name="E:Microsoft.Silverlight.Testing.Controls.TreeViewItem.Unselected">
+            <summary>
+            Occurs when the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.TreeViewItem.IsSelected" />
+            property of a <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" />
+            changes from true to false.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.ResultsTreeViewItem.GetContainerForItemOverride">
+            <summary>
+            Overrides the item to allow for simple binding to the expanded
+            property on the item.
+            </summary>
+            <returns>Returns a new container for an item.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.ResultsTreeViewItem.OnKeyDown(System.Windows.Input.KeyEventArgs)">
+            <summary>
+            Overrides the key down event to allow toggling the space.
+            </summary>
+            <param name="e">The key event arguments data.</param>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.Slide">
+            <summary>
+            A specialized content control that contains a fixed header, a standard
+            header content property, plus content. It is designed specifically for
+            a "slide-based" user interface for simple user interfaces.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.Slide.GroupPosition">
+            <summary>
+            The visual state group name for slide position.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.Slide.StatePositionLeft">
+            <summary>
+            The visual state name for left position.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.Slide.StatePositionRight">
+            <summary>
+            The visual state name for right position.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.Slide.StatePositionNormal">
+            <summary>
+            The normal visual state name for position.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.Slide.PartContent">
+            <summary>
+            The content template part name.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.Slide.PartHeader">
+            <summary>
+            The header template part name.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.Slide.PartFixedHeader">
+            <summary>
+            The fixed header template name.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.Slide._parent">
+            <summary>
+            The manager of the slide and its siblings.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.Slide.HeaderProperty">
+            <summary>
+            Identifies the Header dependency property.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.Slide.FixedHeaderProperty">
+            <summary>
+            Identifies the FixedHeader dependency property.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.Slide.PositionProperty">
+            <summary>
+            Identifies the Position dependency property.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.Slide.OnPositionPropertyChanged(System.Windows.DependencyObject,System.Windows.DependencyPropertyChangedEventArgs)">
+            <summary>
+            PositionProperty property changed handler.
+            </summary>
+            <param name="d">Slide that changed its Position.</param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.Slide.#ctor">
+            <summary>
+            Initializes a new instance of the Slide class.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.Slide.RemoveFromManager">
+            <summary>
+            Remove the slide from the parent manager.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.Slide.OnApplyTemplate">
+            <summary>
+            Locate template parts and assign instances to fields during template
+            application.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.Slide.OnSlideChanged">
+            <summary>
+            Fires the slide changed event.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.Slide.OnCurrentStateChanged(System.Object,System.Windows.VisualStateChangedEventArgs)">
+            <summary>
+            Fires the current state changed event.
+            </summary>
+            <param name="sender">The source object.</param>
+            <param name="e">The event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.Slide.ToString">
+            <summary>
+            Helps debugging by providing information about the slide name.
+            </summary>
+            <returns>Returns the name of the slide.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.Slide.UpdateVisualState(System.Boolean,Microsoft.Silverlight.Testing.Client.SlidePosition)">
+            <summary>
+            Updates the visual state.
+            </summary>
+            <param name="useTransitions">A value indicating whether to use
+            visual transitions for the state change.</param>
+            <param name="sp">The slide position to use.</param>
+        </member>
+        <member name="E:Microsoft.Silverlight.Testing.Client.Slide.SlideChanged">
+            <summary>
+            Event fired when the current slide changes.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.Slide.Header">
+            <summary>
+            Gets or sets the primary header content.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.Slide.FixedHeader">
+            <summary>
+            Gets or sets the fixed header content.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.Slide.Position">
+            <summary>
+            Gets or sets the position of the slide.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.Slide.SlideManager">
+            <summary>
+            Gets or sets the slide manager for the slide.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.SlideManager">
+            <summary>
+            A helper class to managing sets of slides.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.SlideManager.#ctor">
+            <summary>
+            Initializes a new instance of the SlideManager class.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.SlideManager._current">
+            <summary>
+            Stores the linked list node for the current slide.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.SlideManager._slides">
+            <summary>
+            Backing field for the set of slides.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.SlideManager.Add(Microsoft.Silverlight.Testing.Client.Slide[])">
+            <summary>
+            Adds a slide or an array of slides to the managed slide set.
+            </summary>
+            <param name="slides">The slides to manage.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.SlideManager.InitializePosition(Microsoft.Silverlight.Testing.Client.Slide,System.Boolean)">
+            <summary>
+            Initializes the position of the slide based on location.
+            </summary>
+            <param name="slide">The slide instance.</param>
+            <param name="isFirst">A property indicating whether the slide is the
+            first to be managed.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.SlideManager.InsertAfter(Microsoft.Silverlight.Testing.Client.Slide,Microsoft.Silverlight.Testing.Client.Slide)">
+            <summary>
+            Manages a new slide, inserting it after an existing slide node.
+            </summary>
+            <param name="before">The node to insert after.</param>
+            <param name="newSlide">The new slide instance.</param>
+            <returns>Returns the linked list node that is inserted.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.SlideManager.InsertFirst(Microsoft.Silverlight.Testing.Client.Slide)">
+            <summary>
+            Inserts a slide as the first in the linked list.
+            </summary>
+            <param name="newSlide">The new slide instance.</param>
+            <returns>Returns the linked list node.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.SlideManager.InsertAfter(System.Collections.Generic.LinkedListNode{Microsoft.Silverlight.Testing.Client.Slide},Microsoft.Silverlight.Testing.Client.Slide)">
+            <summary>
+            Insert a slide after a provided linked list node.
+            </summary>
+            <param name="before">The node to insert after.</param>
+            <param name="newSlide">The new slide to insert.</param>
+            <returns>Returns the new linked list node.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.SlideManager.Remove(Microsoft.Silverlight.Testing.Client.Slide)">
+            <summary>
+            Remove a slide from management.
+            </summary>
+            <param name="slide">The slide instance.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.SlideManager.Previous">
+            <summary>
+            Move to the previous slide.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.SlideManager.Next">
+            <summary>
+            Move to the next slide.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.SlideManager.MoveTo(Microsoft.Silverlight.Testing.Client.Slide)">
+            <summary>
+            Moves to a specific slide, moving the others to the appropriate
+            direction on screen.
+            </summary>
+            <param name="slide">The slide to move to.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.SlideManager.Move(System.Boolean)">
+            <summary>
+            Move in a direction.
+            </summary>
+            <param name="forward">A value indicating whether the direction to
+            move is forward or not.</param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.SlideManager.Current">
+            <summary>
+            Gets the current slide instance.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.SlidePosition">
+            <summary>
+            Indicates the position that the slide should have.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.SlidePosition.Normal">
+            <summary>
+            Normal position, centered on the screen.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.SlidePosition.Left">
+            <summary>
+            To the left of the screen.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.SlidePosition.Right">
+            <summary>
+            To the right of the screen.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.TagEditor">
+            <summary>
+            The TagEditor control provides a brief user interface allowing for the
+            selection of a set of tests, used to filter the test run.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TagEditor.TagHistoryKey">
+            <summary>
+            Key used to lookup the TagHistory site setting.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TagEditor.TagLastRunHistoryKey">
+            <summary>
+            Key used to lookup whether the last run used tag expressions.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TagEditor.SecondsToWait">
+            <summary>
+            Number of seconds to wait before running the test.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TagEditor._lastRunUsedExpressions">
+            <summary>
+            Backing field for the last run used value.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TagEditor.#ctor(System.String,System.Collections.Generic.IList{System.String})">
+            <summary>
+            Initializes a new instance of the TagEditor type. Also includes a
+            set of sample tags for display to the end user.
+            </summary>
+            <param name="initialTagExpression">The tag expression to use.</param>
+            <param name="sampleTags">Sample tags to display.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TagEditor.#ctor(System.String)">
+            <summary>
+            Initializes a new instance of the TagEditor type.
+            </summary>
+            <param name="initialTagExpression">The tag expression to use.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TagEditor.#ctor">
+            <summary>
+            Initializes a new instance of the TagEditor type.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TagEditor.OnKeyDown(System.Windows.Input.KeyEventArgs)">
+            <summary>
+            Handles the key down event.
+            </summary>
+            <param name="e">The key event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TagEditor.OnComplete(Microsoft.Silverlight.Testing.Client.TagExpressionEventArgs)">
+            <summary>
+            Fires the Complete event.
+            </summary>
+            <param name="e">The event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TagEditor.CreateTagButton(System.String)">
+            <summary>
+            Creates a new button.
+            </summary>
+            <param name="content">The button content.</param>
+            <returns>Returns a new Button instance.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TagEditor.OnTagButtonClicked(System.Object,System.Windows.RoutedEventArgs)">
+            <summary>
+            Handle selection of a tag button.
+            </summary>
+            <param name="sender">Tag button.</param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TagEditor.OnTagTouched(System.Object,System.Windows.RoutedEventArgs)">
+            <summary>
+            Handle changes to the Tag text.
+            </summary>
+            <param name="sender">Tag TextBox.</param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TagEditor.OnRunClicked(System.Object,System.Windows.RoutedEventArgs)">
+            <summary>
+            Handle clicks to the Run button.
+            </summary>
+            <param name="sender">Run Button.</param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TagEditor.OnTimerTick(System.Object,System.EventArgs)">
+            <summary>
+            Handle timer ticks.
+            </summary>
+            <param name="sender">The timer.</param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TagEditor.StopTimer">
+            <summary>
+            Stop the timer.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TagEditor.RunTests">
+            <summary>
+            Run the unit tests.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TagEditor.OnCancelClicked(System.Object,System.Windows.RoutedEventArgs)">
+            <summary>
+            Cancels the selection of a tag expression.
+            </summary>
+            <param name="sender">The source object.</param>
+            <param name="e">The event data.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TagEditor.InitializeComponent">
+            <summary>
+            InitializeComponent
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TagEditor.Timer">
+            <summary>
+            Gets or sets the timer used to automatically run tests if no tag is
+            entered.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TagEditor.SecondsWaited">
+            <summary>
+            Gets or sets the number of seconds already waited.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TagEditor.TagHistory">
+            <summary>
+            Gets or sets the tag history.
+            </summary>
+        </member>
+        <member name="E:Microsoft.Silverlight.Testing.Client.TagEditor.Complete">
+            <summary>
+            An event that indicates that the tag editor is complete. This can be
+            in response to many actions: the user entering a tag expression, the
+            time expiring and the default being selected, or the selection being
+            canceled.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.TagExpressionEventArgs">
+            <summary>
+            A class for storing event information relating to a user's selected
+            tag expression for a test run.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TagExpressionEventArgs.#ctor(System.String)">
+            <summary>
+            Initializes a new instance of the TagExpression event arguments
+            class.
+            </summary>
+            <param name="tagExpression">The tag expression.</param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TagExpressionEventArgs.TagExpression">
+            <summary>
+            Gets the tag expression stored in the event arguments.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TagExpressionEventArgs.HasTagExpression">
+            <summary>
+            Gets a value indicating whether a tag expression has been set.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.TestExceptionDetails">
+            <summary>
+            Displays information about any exceptions listed in the results.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TestExceptionDetails.#ctor">
+            <summary>
+            Initializes a new instance of the TestExceptionDetails class.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TestExceptionDetails.InitializeComponent">
+            <summary>
+            InitializeComponent
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.TestMethodDetails">
+            <summary>
+            Details view for test method data.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TestMethodDetails.#ctor">
+            <summary>
+            Initializes a new instance of the TestMethodDetails class.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TestMethodDetails.InitializeComponent">
+            <summary>
+            InitializeComponent
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.TimeHelper">
+            <summary>
+            A set of simple time helper methods.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TimeHelper.ElapsedReadableTime(System.DateTime,System.DateTime)">
+            <summary>
+            Returns a human-readable formatting of the time different between 
+            two DateTime instances.
+            </summary>
+            <param name="start">The starting time.</param>
+            <param name="finish">The finishing time.</param>
+            <returns>Returns a human-readable string.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TimeHelper.ElapsedReadableTime(System.TimeSpan)">
+            <summary>
+            Returns a human-readable formatting of the time different between 
+            two DateTime instances.
+            </summary>
+            <param name="ts">The time span instance.</param>
+            <returns>Returns a human-readable string.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TimeHelper.Plural(System.String,System.Int32)">
+            <summary>
+            A plural 's' as the suffix, when not equal to one.
+            </summary>
+            <param name="value">The string value.</param>
+            <param name="number">The number to check.</param>
+            <returns>Returns an empty string or the English plural 's'.</returns>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Controls.TreeViewConnectingLines">
+            <summary>
+            Provides the necessary infrastructure to enable drawing connecting
+            lines between the TreeViewItems in a TreeView.
+            </summary>
+            <QualityBand>Experimental</QualityBand>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewConnectingLines.GetConnectingLineInfo(Microsoft.Silverlight.Testing.Controls.TreeViewItem)">
+            <summary>
+            Gets the value of the ConnectingLineInfo attached property for a
+            specified TreeViewItem.
+            </summary>
+            <param name="element">
+            The TreeViewItem from which the property value is read.
+            </param>
+            <returns>
+            The ConnectingLineInfo property value for the TreeViewItem.
+            </returns>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.TreeViewConnectingLines.ConnectingLineInfoProperty">
+            <summary>
+            Identifies the ConnectingLineInfo dependency property.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewConnectingLines.GetIsVerticalConnectingLineOf(System.Windows.Shapes.Line)">
+            <summary>
+            Gets the value of the IsVerticalConnectingLineOf attached property
+            for a specified Line.
+            </summary>
+            <param name="element">The Line from which the property value is read.</param>
+            <returns>The IsVerticalConnectingLineOf property value for the Line.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewConnectingLines.SetIsVerticalConnectingLineOf(System.Windows.Shapes.Line,Microsoft.Silverlight.Testing.Controls.TreeViewItem)">
+            <summary>
+            Sets the value of the IsVerticalConnectingLineOf attached property to a specified Line.
+            </summary>
+            <param name="element">The Line to which the attached property is written.</param>
+            <param name="value">The needed IsVerticalConnectingLineOf value.</param>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.TreeViewConnectingLines.IsVerticalConnectingLineOfProperty">
+            <summary>
+            Identifies the IsVerticalConnectingLineOf dependency property.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewConnectingLines.OnIsVerticalConnectingLineOfPropertyChanged(System.Windows.DependencyObject,System.Windows.DependencyPropertyChangedEventArgs)">
+            <summary>
+            IsVerticalConnectingLineOfProperty property changed handler.
+            </summary>
+            <param name="d">
+            Line that changed its IsVerticalConnectingLineOf TreeViewItem.
+            </param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewConnectingLines.GetIsHorizontalConnectingLineOf(System.Windows.Shapes.Line)">
+            <summary>
+            Gets the value of the IsHorizontalConnectingLineOf attached property
+            for a specified Line.
+            </summary>
+            <param name="element">
+            The Line from which the property value is read.
+            </param>
+            <returns>
+            The IsHorizontalConnectingLineOf property value for the Line.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewConnectingLines.SetIsHorizontalConnectingLineOf(System.Windows.Shapes.Line,Microsoft.Silverlight.Testing.Controls.TreeViewItem)">
+            <summary>
+            Sets the value of the IsHorizontalConnectingLineOf attached property
+            to a specified Line.
+            </summary>
+            <param name="element">
+            The Line to which the attached property is written.
+            </param>
+            <param name="value">
+            The needed IsHorizontalConnectingLineOf value.
+            </param>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.TreeViewConnectingLines.IsHorizontalConnectingLineOfProperty">
+            <summary>
+            Identifies the IsHorizontalConnectingLineOf dependency property.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewConnectingLines.OnIsHorizontalConnectingLineOfPropertyChanged(System.Windows.DependencyObject,System.Windows.DependencyPropertyChangedEventArgs)">
+            <summary>
+            IsHorizontalConnectingLineOfProperty property changed handler.
+            </summary>
+            <param name="d">
+            Line that changed its IsHorizontalConnectingLineOf TreeViewItem.
+            </param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewConnectingLines.GetIsExpanderButtonOf(System.Windows.Controls.Primitives.ToggleButton)">
+            <summary>
+            Gets the value of the IsExpanderButtonOf attached property for a
+            specified ToggleButton.
+            </summary>
+            <param name="element">
+            The ToggleButton from which the property value is read.
+            </param>
+            <returns>
+            The IsExpanderButtonOf property value for the ToggleButton.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewConnectingLines.SetIsExpanderButtonOf(System.Windows.Controls.Primitives.ToggleButton,Microsoft.Silverlight.Testing.Controls.TreeViewItem)">
+            <summary>
+            Sets the value of the IsExpanderButtonOf attached property to a
+            specified ToggleButton.
+            </summary>
+            <param name="element">
+            The ToggleButton to which the attached property is written.
+            </param>
+            <param name="value">The needed IsExpanderButtonOf value.</param>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.TreeViewConnectingLines.IsExpanderButtonOfProperty">
+            <summary>
+            Identifies the IsExpanderButtonOf dependency property.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewConnectingLines.OnIsExpanderButtonOfPropertyChanged(System.Windows.DependencyObject,System.Windows.DependencyPropertyChangedEventArgs)">
+            <summary>
+            IsExpanderButtonOfProperty property changed handler.
+            </summary>
+            <param name="d">
+            ToggleButton that changed its IsExpanderButtonOf TreeViewItem.
+            </param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewConnectingLines.GetIsHeaderOf(System.Windows.FrameworkElement)">
+            <summary>
+            Gets the value of the IsHeaderOf attached property for a specified
+            FrameworkElement.
+            </summary>
+            <param name="element">
+            The FrameworkElement from which the property value is read.
+            </param>
+            <returns>
+            The IsHeaderOf property value for the FrameworkElement.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewConnectingLines.SetIsHeaderOf(System.Windows.FrameworkElement,Microsoft.Silverlight.Testing.Controls.TreeViewItem)">
+            <summary>
+            Sets the value of the IsHeaderOf attached property to a specified
+            FrameworkElement.
+            </summary>
+            <param name="element">
+            The FrameworkElement to which the attached property is written.
+            </param>
+            <param name="value">The needed IsHeaderOf value.</param>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.TreeViewConnectingLines.IsHeaderOfProperty">
+            <summary>
+            Identifies the IsHeaderOf dependency property.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewConnectingLines.OnIsHeaderOfPropertyChanged(System.Windows.DependencyObject,System.Windows.DependencyPropertyChangedEventArgs)">
+            <summary>
+            IsHeaderOfProperty property changed handler.
+            </summary>
+            <param name="d">
+            FrameworkElement that changed its IsHeaderOf TreeViewItem.
+            </param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions">
+            <summary>
+            Provides useful extensions to TreeView and TreeViewItem instances.
+            </summary>
+            <QualityBand>Experimental</QualityBand>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.GetParentItemsControl(System.Windows.DependencyObject)">
+            <summary>
+            Get the parent ItemsControl of an element.
+            </summary>
+            <param name="element">The element.</param>
+            <returns>
+            The parent ItemsControl of an element, or null if not found.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.GetAncestorItemsControls(System.Windows.DependencyObject)">
+            <summary>
+            Get the ancestor ItemsControls of an element.
+            </summary>
+            <param name="element">The element.</param>
+            <returns>
+            The ancestor ItemsControls of an element.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.GetParentTreeViewItem(Microsoft.Silverlight.Testing.Controls.TreeViewItem)">
+            <summary>
+            Get the parent TreeViewItem of a TreeViewItem.
+            </summary>
+            <param name="item">The TreeViewItem.</param>
+            <returns>
+            The parent TreeViewItem if found, otherwise null.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="item" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.GetParentTreeView(Microsoft.Silverlight.Testing.Controls.TreeViewItem)">
+            <summary>
+            Get the parent TreeView of a TreeViewItem.
+            </summary>
+            <param name="item">The TreeViewItem.</param>
+            <returns>The parent TreeView if found, otherwise null.</returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="item" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.GetContainers(Microsoft.Silverlight.Testing.Controls.TreeView)">
+            <summary>
+            Get the TreeViewItem containers of a TreeView.
+            </summary>
+            <param name="view">The TreeView.</param>
+            <returns>The TreeViewItem containers of a TreeView.</returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="view" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.GetContainers(Microsoft.Silverlight.Testing.Controls.TreeViewItem)">
+            <summary>
+            Get the child TreeViewItem containers of a TreeViewItem.
+            </summary>
+            <param name="item">The TreeViewItem.</param>
+            <returns>
+            The child TreeViewItem containers of a TreeViewItem.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="item" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.GetItemsAndContainers(Microsoft.Silverlight.Testing.Controls.TreeView)">
+            <summary>
+            Get the items and TreeViewItem containers of a TreeView.
+            </summary>
+            <param name="view">The TreeView.</param>
+            <returns>
+            The items and TreeViewItem containers of a TreeView.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="view" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.GetItemsAndContainers(Microsoft.Silverlight.Testing.Controls.TreeViewItem)">
+            <summary>
+            Get the items and TreeViewItem containers of a TreeViewItem.
+            </summary>
+            <param name="item">The TreeViewItem.</param>
+            <returns>
+            The items and TreeViewItem containers of a TreeViewItem.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="item" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.GetDescendantContainers(Microsoft.Silverlight.Testing.Controls.TreeView)">
+            <summary>
+            Get the TreeViewItem containers of a TreeView.
+            </summary>
+            <param name="view">The TreeView.</param>
+            <returns>The TreeViewItem containers of a TreeView.</returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="view" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.GetDescendantContainers(Microsoft.Silverlight.Testing.Controls.TreeViewItem)">
+            <summary>
+            Get the descendant TreeViewItem containers of a TreeViewItem.
+            </summary>
+            <param name="item">The TreeViewItem.</param>
+            <returns>
+            The descendant TreeViewItem containers of a TreeViewItem.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="item" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.GetDescendantItemsAndContainers(Microsoft.Silverlight.Testing.Controls.TreeView)">
+            <summary>
+            Get the descendant items and TreeViewItem containers of a TreeView.
+            </summary>
+            <param name="view">The TreeView.</param>
+            <returns>
+            The descendant items and TreeViewItem containers of a TreeView.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="view" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.GetDescendantItemsAndContainers(Microsoft.Silverlight.Testing.Controls.TreeViewItem)">
+            <summary>
+            Get the descendant items and TreeViewItem containers of a
+            TreeViewItem.
+            </summary>
+            <param name="item">The TreeViewItem.</param>
+            <returns>
+            The descendant items and TreeViewItem containers of a TreeViewItem.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="item" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.GetDescendantItemsAndContainersIterator(System.Windows.Controls.ItemsControl)">
+            <summary>
+            Get the items and TreeViewItem containers of a TreeView or
+            TreeViewItem.
+            </summary>
+            <param name="control">The TreeView or TreeViewItem.</param>
+            <returns>
+            The items and TreeViewItem containers of a TreeView or TreeViewItem.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.GetSiblingItemsAndContainers(Microsoft.Silverlight.Testing.Controls.TreeViewItem)">
+            <summary>
+            Get the sibling items and containers of the item.
+            </summary>
+            <param name="item">The TreeViewItem.</param>
+            <returns>The sibling items and containers of the item.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.GetContainersFromItem(Microsoft.Silverlight.Testing.Controls.TreeView,System.Object)">
+            <summary>
+            Get the TreeViewItems already created that are used to represent the
+            given item.
+            </summary>
+            <param name="view">The TreeView.</param>
+            <param name="item">The item being represented.</param>
+            <returns>
+            A sequence of TreeViewItems that represent the given item, or an
+            empty sequence if none were found.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="view" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.GetContainerFromItem(Microsoft.Silverlight.Testing.Controls.TreeView,System.Object)">
+            <summary>
+            Get the TreeViewItem already created that is used to represent the
+            given item.
+            </summary>
+            <param name="view">The TreeView.</param>
+            <param name="item">The item being represented.</param>
+            <returns>
+            The TreeViewItems that represents the given item, or null if no
+            container was found.
+            </returns>
+            <remarks>
+            If multiple TreeViewItems represent the same item, the first item
+            found via a breadth-first search will be used.
+            </remarks>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="view" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.GetPath(Microsoft.Silverlight.Testing.Controls.TreeViewItem)">
+            <summary>
+            Gets a path of items and TreeViewItem containers from the
+            TreeViewItem to the root of the TreeView.
+            </summary>
+            <param name="item">The TreeViewItem.</param>
+            <returns>
+            A path of items and TreeViewItem containers from the TreeViewItem to
+            the root of the TreeView.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="item" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.GetPathIterator(Microsoft.Silverlight.Testing.Controls.TreeViewItem)">
+            <summary>
+            Gets a path of items and TreeViewItem containers from the
+            TreeViewItem to the root of the TreeView.
+            </summary>
+            <param name="item">The TreeViewItem.</param>
+            <returns>
+            A path of items and TreeViewItem containers from the TreeViewItem to
+            the root of the TreeView.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.GetItem(Microsoft.Silverlight.Testing.Controls.TreeViewItem)">
+            <summary>
+            Get the item wrapped by this container.
+            </summary>
+            <param name="item">The TreeViewItem.</param>
+            <returns>
+            The item wrapped by the container, or null if not found.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="item" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.GetParentItem(Microsoft.Silverlight.Testing.Controls.TreeView,System.Object)">
+            <summary>
+            Get the item of the parent container for a specified
+            <paramref name="item" />.
+            </summary>
+            <param name="view">
+            The TreeView containing the <paramref name="item" />.
+            </param>
+            <param name="item">The child item.</param>
+            <returns>
+            The item of the parent container for the specified
+            <paramref name="item" />, or null if not found.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.GetIsRoot(Microsoft.Silverlight.Testing.Controls.TreeViewItem)">
+            <summary>
+            Gets a value indicating whether the TreeViewItem is a root of its
+            TreeView.
+            </summary>
+            <param name="item">The TreeViewItem.</param>
+            <returns>
+            A value indicating whether the TreeViewItem is a root of its
+            TreeView.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="item" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.GetIsLeaf(Microsoft.Silverlight.Testing.Controls.TreeViewItem)">
+            <summary>
+            Gets a value indicating whether the TreeViewItem is a leaf in its
+            TreeView.
+            </summary>
+            <param name="item">The TreeViewItem.</param>
+            <returns>
+            A value indicating whether the TreeViewItem is a leaf in its
+            TreeView.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="item" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.GetDepth(Microsoft.Silverlight.Testing.Controls.TreeViewItem)">
+            <summary>
+            Gets the depth of a TreeViewItem in its TreeView (using a zero-based
+            index).
+            </summary>
+            <param name="item">The TreeViewItem.</param>
+            <returns>
+            The depth of a TreeViewItem in its TreeView (using a zero-based
+            index).
+            </returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="item" /> is null.
+            </exception>
+            <exception cref="T:System.ArgumentException">
+            <paramref name="item" /> is not in a TreeView.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.GetSelectedContainer(Microsoft.Silverlight.Testing.Controls.TreeView)">
+            <summary>
+            Get the selected TreeViewItem in a TreeView.
+            </summary>
+            <param name="view">The TreeView.</param>
+            <returns>
+            The selected TreeViewItem, or null if no selected item found.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="view" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.SetSelectedContainer(Microsoft.Silverlight.Testing.Controls.TreeView,Microsoft.Silverlight.Testing.Controls.TreeViewItem)">
+            <summary>
+            Sets the selected TreeViewItem of a TreeView.
+            </summary>
+            <param name="view">The TreeView.</param>
+            <param name="item">The TreeViewItem to select.</param>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="view" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.ClearSelection(Microsoft.Silverlight.Testing.Controls.TreeView)">
+            <summary>
+            Clear the selection of the TreeView.
+            </summary>
+            <param name="view">The TreeView.</param>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="view" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.SelectItem(Microsoft.Silverlight.Testing.Controls.TreeView,System.Object)">
+            <summary>
+            Select an item in the TreeView.
+            </summary>
+            <param name="view">The TreeView.</param>
+            <param name="item">The item to select.</param>
+            <returns>
+            A value indicating whether the item was successfully set as the
+            TreeView's SelectedItem.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="view" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.GetSelectedPath(Microsoft.Silverlight.Testing.Controls.TreeView)">
+            <summary>
+            Gets the path to the TreeView's selected item.
+            </summary>
+            <param name="view">The TreeView.</param>
+            <returns>The path to the TreeView's selected item.</returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="view" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.ExpandOrCollapseAll(Microsoft.Silverlight.Testing.Controls.TreeViewItem,System.Boolean,System.Int32,System.Nullable{System.Int32})">
+            <summary>
+            Recursively expand or collapse the TreeViewItem and all of its
+            descendants.
+            </summary>
+            <param name="item">The TreeViewItem.</param>
+            <param name="expand">
+            A value indicating whether to expand or collapse.
+            </param>
+            <param name="depth">
+            The number of levels that have already been collapsed or expanded.
+            This is used in conjunction with the optional maximumDepth to only
+            expand a specified number of layers.
+            </param>
+            <param name="maximumDepth">
+            An optional depth that defines the number of layers to expand or
+            collapse.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.ExpandOrCollapseAll(Microsoft.Silverlight.Testing.Controls.TreeView,System.Boolean,System.Nullable{System.Int32})">
+            <summary>
+            Expand or collapse all of the descendants of the TreeView.
+            </summary>
+            <param name="view">The TreeView.</param>
+            <param name="expand">
+            A value indicating whether to expand or collapse.
+            </param>
+            <param name="maximumDepth">
+            An optional depth that defines the number of layers to expand or
+            collapse.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.ExpandAll(Microsoft.Silverlight.Testing.Controls.TreeView)">
+            <summary>
+            Expand all of the items in a TreeView.
+            </summary>
+            <param name="view">The TreeView.</param>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="view" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.CollapseAll(Microsoft.Silverlight.Testing.Controls.TreeView)">
+            <summary>
+            Collapse all of the items in a TreeView.
+            </summary>
+            <param name="view">The TreeView.</param>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="view" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.ExpandToDepth(Microsoft.Silverlight.Testing.Controls.TreeView,System.Int32)">
+            <summary>
+            Expand a specified number of layers in a TreeView.
+            </summary>
+            <param name="view">The TreeView.</param>
+            <param name="depth">The number of layers to expand.</param>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="view" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.ExpandPathToRoot(Microsoft.Silverlight.Testing.Controls.TreeViewItem,System.Boolean)">
+            <summary>
+            Expand a path from the given item to the root of it's TreeView.
+            </summary>
+            <param name="item">The TreeViewItem.</param>
+            <param name="collapseSiblings">
+            A value indicating whether to collapse siblings while expanding the
+            path.  This will result in only the path from the item to the root
+            being expanded.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.ExpandPath(Microsoft.Silverlight.Testing.Controls.TreeViewItem)">
+            <summary>
+            Expand a path from the TreeViewItem to the root of the TreeView.
+            </summary>
+            <param name="item">The TreeViewItem.</param>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="item" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.ExpandSelectedPath(Microsoft.Silverlight.Testing.Controls.TreeView)">
+            <summary>
+            Expand the path from the SelectedItem to the root of the TreeView.
+            </summary>
+            <param name="view">The TreeView.</param>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="view" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.CollapseAllButSelectedPath(Microsoft.Silverlight.Testing.Controls.TreeView)">
+            <summary>
+            Collapse all TreeViewItems except those along the path from the
+            TreeView's SelectedItem to the root of the TreeView.
+            </summary>
+            <param name="view">The TreeView.</param>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="view" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.ExpandPath(Microsoft.Silverlight.Testing.Controls.TreeView,System.Object[])">
+            <summary>
+            Expand the given path of items starting from the TreeView's root.
+            </summary>
+            <param name="view">The TreeView.</param>
+            <param name="items">
+            The sequence of items corresponding to the path to expand.
+            </param>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="view" /> is null.
+            </exception>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="items" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.ExpandPath``1(Microsoft.Silverlight.Testing.Controls.TreeView,System.Collections.Generic.IEnumerable{``0})">
+            <summary>
+            Expand the given path of items starting from the TreeView's root.
+            </summary>
+            <typeparam name="T">
+            The type of items provided in <paramref name="items" />.
+            </typeparam>
+            <param name="view">The TreeView.</param>
+            <param name="items">
+            The sequence of items corresponding to the path to expand.
+            </param>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="view" /> is null.
+            </exception>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="items" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.ExpandPath``1(Microsoft.Silverlight.Testing.Controls.TreeView,System.Func{System.Object,``0},``0[])">
+            <summary>
+            Expand the given path of items starting from the TreeView's root.
+            </summary>
+            <typeparam name="T">
+            The type of items provided in <paramref name="items" />.
+            </typeparam>
+            <param name="view">The TreeView.</param>
+            <param name="comparisonSelector">
+            A function that takes a TreeViewItem's item and returns a value to
+            compare against elements of the given <paramref name="items" />.
+            The item itself will be used if 
+            <paramref name="comparisonSelector" /> is null.
+            </param>
+            <param name="items">
+            The sequence of items corresponding to the path to expand.
+            </param>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="view" /> is null.
+            </exception>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="items" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.ExpandPath``1(Microsoft.Silverlight.Testing.Controls.TreeView,System.Func{System.Object,``0},System.Collections.Generic.IEnumerable{``0})">
+            <summary>
+            Expand the given path of items starting from the TreeView's root.
+            </summary>
+            <typeparam name="T">
+            The type of items provided in <paramref name="items" />.
+            </typeparam>
+            <param name="view">The TreeView.</param>
+            <param name="comparisonSelector">
+            A function that takes a TreeViewItem's item and returns a value to
+            compare against elements of the given <paramref name="items" />.
+            The item itself will be used if 
+            <paramref name="comparisonSelector" /> is null.
+            </param>
+            <param name="items">
+            The sequence of items corresponding to the path to expand.
+            </param>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="view" /> is null.
+            </exception>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="items" /> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.GetIsChecked(Microsoft.Silverlight.Testing.Controls.TreeViewItem)">
+            <summary>
+            Gets the value of the IsChecked attached property for a specified
+            TreeViewItem.
+            </summary>
+            <param name="element">
+            The TreeViewItem from which the property value is read.
+            </param>
+            <returns>
+            The IsChecked property value for the TreeViewItem.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.SetIsChecked(Microsoft.Silverlight.Testing.Controls.TreeViewItem,System.Nullable{System.Boolean})">
+            <summary>
+            Sets the value of the IsChecked attached property to a specified
+            TreeViewItem.
+            </summary>
+            <param name="element">
+            The TreeViewItem to which the attached property is written.
+            </param>
+            <param name="value">The needed IsChecked value.</param>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.IsCheckedProperty">
+            <summary>
+            Identifies the IsChecked dependency property.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.OnIsCheckedPropertyChanged(System.Windows.DependencyObject,System.Windows.DependencyPropertyChangedEventArgs)">
+            <summary>
+            IsCheckedProperty property changed handler.
+            </summary>
+            <param name="d">The TreeViewItem that changed IsChecked.</param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.GetAssociatedCheckBox(Microsoft.Silverlight.Testing.Controls.TreeViewItem)">
+            <summary>
+            Gets the value of the AssociatedCheckBox attached property for a
+            specified TreeViewItem.
+            </summary>
+            <param name="element">
+            The TreeViewItem from which the property value is read.
+            </param>
+            <returns>
+            The AssociatedCheckBox property value for the TreeViewItem.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.SetAssociatedCheckBox(Microsoft.Silverlight.Testing.Controls.TreeViewItem,Microsoft.Silverlight.Testing.Controls.TreeViewItemCheckBox)">
+            <summary>
+            Sets the value of the AssociatedCheckBox attached property to a
+            specified TreeViewItem.
+            </summary>
+            <param name="element">
+            The TreeViewItem to which the attached property is written.
+            </param>
+            <param name="value">The needed AssociatedCheckBox value.</param>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.AssociatedCheckBoxProperty">
+            <summary>
+            Identifies the AssociatedCheckBox dependency property.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.OnAssociatedCheckBoxPropertyChanged(System.Windows.DependencyObject,System.Windows.DependencyPropertyChangedEventArgs)">
+            <summary>
+            AssociatedCheckBoxProperty property changed handler.
+            </summary>
+            <param name="d">
+            The TreeViewItem that changed its AssociatedCheckBox.
+            </param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.GetCheckedItemsAndContainers(Microsoft.Silverlight.Testing.Controls.TreeView)">
+            <summary>
+            Get the sequence of items and containers with their IsChecked
+            property set to True.
+            </summary>
+            <param name="view">The TreeView.</param>
+            <returns>
+            The sequence of items and containers with their IsChecked property
+            set to True.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="view"/> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.GetCheckedItemsAndContainers(Microsoft.Silverlight.Testing.Controls.TreeView,System.Boolean)">
+            <summary>
+            Get the sequence of items and containers with their IsChecked
+            property set to True.
+            </summary>
+            <param name="view">The TreeView.</param>
+            <param name="includeIndeterminate">
+            A value indicating whether to include TreeViewItems with an
+            indeterminate IsChecked value.
+            </param>
+            <returns>
+            The sequence of items and containers with their IsChecked property
+            set to True or also set to null if indeterminate values are
+            included.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="view"/> is null.
+            </exception>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.CancelIsCheckedChangedBubbling">
+            <summary>
+            Gets or sets a value indicating whether recursive calls to
+            OnIsCheckedPropertyChanged should ignore their notifications or
+            process them accordingly.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeViewExtensions.CancelIsCheckedChangedChildNotifications">
+            <summary>
+            Gets or sets a value indicating whether recursive calls to
+            OnIsCheckedPropertyChanged should update their children when their
+            IsChecked value has changed.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Controls.TreeViewItemCheckBox">
+            <summary>
+            Represents a CheckBox whose value is associated with the
+            TreeViewExtensions.IsChecked attached property of TreeViewItems.
+            </summary>
+            <QualityBand>Experimental</QualityBand>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.TreeViewItemCheckBox._parent">
+            <summary>
+            The parent TreeViewItem of the CheckBox.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItemCheckBox.#ctor">
+            <summary>
+            Initializes a new instance of the TreeViewItemCheckBox class.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItemCheckBox.AssociateParentTreeViewItem">
+            <summary>
+            Associate the parent TreeViewItem with the CheckBox.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItemCheckBox.OnIsCheckedChanged(System.Object,System.Windows.RoutedEventArgs)">
+            <summary>
+            Update the TreeViewItem's IsChecked property when this IsChecked
+            property is changed.
+            </summary>
+            <param name="sender">The CheckBox.</param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeViewItemCheckBox.ParentTreeViewItem">
+            <summary>
+            Gets the parent TreeViewItem of the CheckBox.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Controls.TreeViewItemConnectingLineInfo">
+            <summary>
+            Represents the necessary information to draw connecting lines in a
+            TreeViewItem.
+            </summary>
+            <QualityBand>Experimental</QualityBand>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItemConnectingLineInfo.#ctor(Microsoft.Silverlight.Testing.Controls.TreeViewItem)">
+            <summary>
+            Initializes a new instance of the TreeViewItemConnectingLineInfo
+            class.
+            </summary>
+            <param name="item">The TreeViewItem.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItemConnectingLineInfo.PositionConnectingLines">
+            <summary>
+            Position the connecting lines in the TreeViewItem.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItemConnectingLineInfo.PositionVerticalConnectingLine">
+            <summary>
+            Position the vertical connecting line in the TreeViewItem.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeViewItemConnectingLineInfo.Item">
+            <summary>
+            Gets the TreeViewItem.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeViewItemConnectingLineInfo.VerticalConnectingLine">
+            <summary>
+            Gets or sets the vertical connecting line of the TreeViewItem.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeViewItemConnectingLineInfo.HorizontalConnectingLine">
+            <summary>
+            Gets or sets the horizontal connecting line of the TreeViewItem.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeViewItemConnectingLineInfo.ExpanderButton">
+            <summary>
+            Gets or sets the expander button of the TreeViewItem.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.TreeViewItemConnectingLineInfo.Header">
+            <summary>
+            Gets or sets the header of the TreeViewItem.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Controls.TreeViewItemIndentationConverter">
+            <summary>
+            Used to convert TreeViewItems into a value based on their depth in
+            the TreeView.
+            </summary>
+            <QualityBand>Experimental</QualityBand>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItemIndentationConverter.#ctor">
+            <summary>
+            Initializes a new instance of the TreeViewItemIndentationConverter
+            class.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItemIndentationConverter.Convert(System.Object,System.Type,System.Object,System.Globalization.CultureInfo)">
+            <summary>
+            Convert a TreeViewItem into a value based on the depth of the item
+            in the TreeView.
+            </summary>
+            <param name="value">The TreeViewItem.</param>
+            <param name="targetType">
+            The indentation type to convert to (such as Thickness or double).
+            </param>
+            <param name="parameter">
+            The number of pixels to indent each level of the TreeView.  A
+            default value of 15.0 will be used if no parameter is provided.
+            </param>
+            <param name="culture">
+            The culture used to convert the TreeViewItem.
+            </param>
+            <returns>
+            A value based on the depth of the item in the TreeView.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItemIndentationConverter.WrapIndentation(System.Double,System.Type)">
+            <summary>
+            Wrap the indentation in the desired type.
+            </summary>
+            <param name="indentation">
+            The number of pixels to indent the TreeViewItem.
+            </param>
+            <param name="targetType">
+            The indentation type to convert to (such as Thickness or double).
+            </param>
+            <returns>
+            A value based on the depth of the item in the TreeView.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TreeViewItemIndentationConverter.ConvertBack(System.Object,System.Type,System.Object,System.Globalization.CultureInfo)">
+            <summary>
+            Convert an indentation back into a TreeViewItem.  This always throws
+            a NotSupportedException.
+            </summary>
+            <param name="value">The indentation.</param>
+            <param name="targetType">The type of the indentation.</param>
+            <param name="parameter">
+            The number of pixels to indent each level of the TreeView.
+            </param>
+            <param name="culture">
+            The culture used to convert the TreeViewItem.
+            </param>
+            <returns>Always throws a NotSupportedException.</returns>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.ValidateExtensions">
+            <summary>
+            A set of simple extension methods for applications.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.ValidateExtensions.IfApplicationHost(System.Windows.Application)">
+            <summary>
+            Checks whether the application host object is not null.
+            </summary>
+            <param name="app">The application instance.</param>
+            <returns>Returns a value indicating whether the object is not null.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.ValidateExtensions.IfApplicationHostSource(System.Windows.Application)">
+            <summary>
+            Checks whether the application host and its source object is not
+            null.
+            </summary>
+            <param name="app">The application instance.</param>
+            <returns>Returns a value indicating whether the object is not null.</returns>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.VisibilityConverter">
+            <summary>
+            A value converter for collapsing or showing elements.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.VisibilityConverter.Convert(System.Object,System.Type,System.Object,System.Globalization.CultureInfo)">
+            <summary>
+            Convert a boolean value to a Visibility value.
+            </summary>
+            <param name="value">The value instance.</param>
+            <param name="targetType">The target parameter.</param>
+            <param name="parameter">ConverterParameter is of type Visibility.</param>
+            <param name="culture">The culture parameter.</param>
+            <returns>Returns the object.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.VisibilityConverter.ConvertBack(System.Object,System.Type,System.Object,System.Globalization.CultureInfo)">
+            <summary>
+            Support two-way databinding of the VisibilityConverter, converting 
+            Visibility to a bool.
+            </summary>
+            <param name="value">The value instance.</param>
+            <param name="targetType">The target parameter.</param>
+            <param name="parameter">ConverterParameter is of type Visibility.</param>
+            <param name="culture">The culture parameter.</param>
+            <returns>Returns the object.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.VisibilityConverter.GetVisibilityMode(System.Object)">
+            <summary>
+            Determine the visibility mode based on a converter parameter. This
+            parameter is of type Visibility,and specifies what visibility value
+            to return when the boolean value is true.
+            </summary>
+            <param name="parameter">The parameter object.</param>
+            <returns>Returns a Visibility value.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.VisibilityConverter.IsVisibilityInverted(System.Object)">
+            <summary>
+            Determine whether or not visibility is inverted based on a converter
+            parameter. When the parameter is specified as Collapsed, that means
+            that when the boolean value is true, we should return Collapsed,
+            which is inverted.
+            </summary>
+            <param name="parameter">The parameter object.</param>
+            <returns>Returns a value indicating whether the visibility is 
+            inverted.</returns>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.VisualStates">
+            <summary>
+            Visual states helper code.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.VisualStates.GetImplementationRoot(System.Windows.DependencyObject)">
+            <summary>
+            Gets the implementation root of the Control.
+            </summary>
+            <param name="dependencyObject">The DependencyObject.</param>
+            <remarks>
+            Implements Silverlight's corresponding internal property on Control.
+            </remarks>
+            <returns>Returns the implementation root or null.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.VisualStates.TryGetVisualStateGroup(System.Windows.DependencyObject,System.String)">
+            <summary>
+            This method tries to get the named VisualStateGroup for the 
+            dependency object. The provided object's ImplementationRoot will be 
+            looked up in this call.
+            </summary>
+            <param name="dependencyObject">The dependency object.</param>
+            <param name="groupName">The visual state group's name.</param>
+            <returns>Returns null or the VisualStateGroup object.</returns>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Controls.VisualTreeExtensions">
+            <summary>
+            Provides useful extensions for working with the visual tree.
+            </summary>
+            <remarks>
+            Since many of these extension methods are declared on types like
+            DependencyObject high up in the class hierarchy, we've placed them in
+            the Primitives namespace which is less likely to be imported for normal
+            scenarios.
+            </remarks>
+            <QualityBand>Experimental</QualityBand>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.VisualTreeExtensions.GetVisualAncestors(System.Windows.DependencyObject)">
+            <summary>
+            Get the visual tree ancestors of an element.
+            </summary>
+            <param name="element">The element.</param>
+            <returns>The visual tree ancestors of the element.</returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="element"/> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.VisualTreeExtensions.GetVisualAncestorsAndSelf(System.Windows.DependencyObject)">
+            <summary>
+            Get the visual tree ancestors of an element and the element itself.
+            </summary>
+            <param name="element">The element.</param>
+            <returns>
+            The visual tree ancestors of an element and the element itself.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="element"/> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.VisualTreeExtensions.GetVisualAncestorsAndSelfIterator(System.Windows.DependencyObject)">
+            <summary>
+            Get the visual tree ancestors of an element and the element itself.
+            </summary>
+            <param name="element">The element.</param>
+            <returns>
+            The visual tree ancestors of an element and the element itself.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.VisualTreeExtensions.GetVisualChildren(System.Windows.DependencyObject)">
+            <summary>
+            Get the visual tree children of an element.
+            </summary>
+            <param name="element">The element.</param>
+            <returns>The visual tree children of an element.</returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="element"/> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.VisualTreeExtensions.GetVisualChildrenAndSelf(System.Windows.DependencyObject)">
+            <summary>
+            Get the visual tree children of an element and the element itself.
+            </summary>
+            <param name="element">The element.</param>
+            <returns>
+            The visual tree children of an element and the element itself.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="element"/> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.VisualTreeExtensions.GetVisualChildrenAndSelfIterator(System.Windows.DependencyObject)">
+            <summary>
+            Get the visual tree children of an element and the element itself.
+            </summary>
+            <param name="element">The element.</param>
+            <returns>
+            The visual tree children of an element and the element itself.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.VisualTreeExtensions.GetVisualDescendants(System.Windows.DependencyObject)">
+            <summary>
+            Get the visual tree descendants of an element.
+            </summary>
+            <param name="element">The element.</param>
+            <returns>The visual tree descendants of an element.</returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="element"/> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.VisualTreeExtensions.GetVisualDescendantsAndSelf(System.Windows.DependencyObject)">
+            <summary>
+            Get the visual tree descendants of an element and the element
+            itself.
+            </summary>
+            <param name="element">The element.</param>
+            <returns>
+            The visual tree descendants of an element and the element itself.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="element"/> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.VisualTreeExtensions.GetVisualDescendantsAndSelfIterator(System.Windows.DependencyObject)">
+            <summary>
+            Get the visual tree descendants of an element and the element
+            itself.
+            </summary>
+            <param name="element">The element.</param>
+            <returns>
+            The visual tree descendants of an element and the element itself.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.VisualTreeExtensions.GetVisualSiblings(System.Windows.DependencyObject)">
+            <summary>
+            Get the visual tree siblings of an element.
+            </summary>
+            <param name="element">The element.</param>
+            <returns>The visual tree siblings of an element.</returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="element"/> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.VisualTreeExtensions.GetVisualSiblingsAndSelf(System.Windows.DependencyObject)">
+            <summary>
+            Get the visual tree siblings of an element and the element itself.
+            </summary>
+            <param name="element">The element.</param>
+            <returns>
+            The visual tree siblings of an element and the element itself.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="element"/> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.VisualTreeExtensions.GetBoundsRelativeTo(System.Windows.FrameworkElement,System.Windows.UIElement)">
+            <summary>
+            Get the bounds of an element relative to another element.
+            </summary>
+            <param name="element">The element.</param>
+            <param name="otherElement">
+            The element relative to the other element.
+            </param>
+            <returns>
+            The bounds of the element relative to another element, or null if
+            the elements are not related.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="element"/> is null.
+            </exception>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="otherElement"/> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.VisualTreeExtensions.InvokeOnLayoutUpdated(System.Windows.FrameworkElement,System.Action)">
+            <summary>
+            Perform an action when the element's LayoutUpdated event fires.
+            </summary>
+            <param name="element">The element.</param>
+            <param name="action">The action to perform.</param>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="element"/> is null.
+            </exception>
+            <exception cref="T:System.ArgumentNullException">
+            <paramref name="action"/> is null.
+            </exception>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.VisualTreeExtensions.GetLogicalChildren(System.Windows.FrameworkElement)">
+            <summary>
+            Retrieves all the logical children of a framework element using a 
+            breadth-first search. For performance reasons this method manually 
+            manages the stack instead of using recursion.
+            </summary>
+            <param name="parent">The parent framework element.</param>
+            <returns>The logical children of the framework element.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.VisualTreeExtensions.GetLogicalDescendents(System.Windows.FrameworkElement)">
+            <summary>
+            Retrieves all the logical descendents of a framework element using a 
+            breadth-first search. For performance reasons this method manually 
+            manages the stack instead of using recursion.
+            </summary>
+            <param name="parent">The parent framework element.</param>
+            <returns>The logical children of the framework element.</returns>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.CodeCoverage">
+            <summary>
+            The CodeCoverage class is used to collect code coverage information from
+            assemblies that have been instrumented to call the Visit function at the
+            beginning of every basic block.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.CodeCoverage._blocks">
+            <summary>
+            A bit array used to track which basic blocks have been executed.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.CodeCoverage._hitBlocks">
+            <summary>
+            A counter of the hit blocks.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.CodeCoverage.Visit(System.UInt32)">
+            <summary>
+            Record that a basic block is being executed.
+            </summary>
+            <param name="id">Id of the basic block.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.CodeCoverage.GetCoverageData">
+            <summary>
+            Get the coverage data serialized as a string for easy transport.
+            </summary>
+            <remarks>Previous releases of the framework used a simplistic bit
+            list, this release updates the coverage reporting endpoint to an
+            alternate version that ends in base 64. This maintains test runner
+            compatibility with previous official releases.</remarks>
+            <returns>Coverage data serialized as a string.</returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.CodeCoverage.HitBlockCount">
+            <summary>
+            Gets the current number of hit blocks.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.CodeCoverage.BlockCount">
+            <summary>
+            Gets the current size of the blocks counter. This is not actually 
+            the number of hit blocks, but it should return 0 always except 
+            when at least one block is hit.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.CustomFrameworkUnitTest">
+            <summary>
+            Base class for test cases that use special functionality of the 
+            Microsoft.Silverlight.Testing unit test framework.
+            
+            Tests that derive from CustomTest in most cases will not be source- or 
+            functionality- compatible with the more advanced desktop Visual Studio 
+            Test Team environment and harnesses.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.CustomFrameworkUnitTest.HandleException(System.Exception)">
+            <summary>
+            Process an exception using the test engine logic for 
+            ExpectedExceptions and logging the exception if needed.
+            </summary>
+            <param name="ex">Exception object.</param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.CustomFrameworkUnitTest.InterceptUnhandledExceptions">
+            <summary>
+            Gets or sets a value indicating whether global unhandled exceptions 
+            should be intercepted by the test harness.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.CustomFrameworkUnitTest.UnitTestHarness">
+            <summary>
+            Gets or sets the unit test harness instance.  Hidden from the VS 
+            browser as test developers should not need to use this property.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.CustomFrameworkUnitTest.WorkItemContainer">
+            <summary>
+            Gets the current test task container.
+            </summary>
+            <returns>The current container for the test's tasks.</returns>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.DataManager">
+            <summary>
+            Manages the unit test status and model by attaching to the unit test
+            harness instance. Validates that all key logging can be done without
+            special hooks inside of the unit test harness implementation.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.DataManager._h">
+            <summary>
+            The unit test harness instance.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.DataManager._d">
+            <summary>
+            The test run data.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.DataManager._assemblyData">
+            <summary>
+            Map assembly metadata to data objects.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.DataManager._classData">
+            <summary>
+            Map test class metadata to data objects.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.DataManager._methodData">
+            <summary>
+            Map test metadata to data objects.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.DataManager._lastResult">
+            <summary>
+            Backing field for the last result.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.DataManager._lastFailingResult">
+            <summary>
+            Backing field for the last failing result.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.DataManager.#ctor(Microsoft.Silverlight.Testing.Harness.UnitTestHarness)">
+            <summary>
+            Initializes a new instance of the DataManager type.
+            </summary>
+            <param name="harness">The unit test harness instance.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.DataManager.Create(Microsoft.Silverlight.Testing.Harness.UnitTestHarness)">
+            <summary>
+            Initializes a new instance of the DataManager.
+            </summary>
+            <param name="harness">The unit test harness instance.</param>
+            <returns>Returns a new instance of a DataManager class.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.DataManager.Hook">
+            <summary>
+            Connect to unit test harness events for processing and updating the
+            underlying unit test run model.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.DataManager.Unhook">
+            <summary>
+            Unhook from the unit test harness events.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.DataManager.OnTestRunStarting(System.Object,Microsoft.Silverlight.Testing.Harness.TestRunStartingEventArgs)">
+            <summary>
+            Process the starting of the test run.
+            </summary>
+            <param name="sender">The source object.</param>
+            <param name="e">The event data.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.DataManager.OnTestClassStarting(System.Object,Microsoft.Silverlight.Testing.Harness.TestClassStartingEventArgs)">
+            <summary>
+            Process the test class starting event.
+            </summary>
+            <param name="sender">The source object.</param>
+            <param name="e">The event data.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.DataManager.OnTestClassCompleted(System.Object,Microsoft.Silverlight.Testing.Harness.TestClassCompletedEventArgs)">
+            <summary>
+            Process the test class complete event.
+            </summary>
+            <param name="sender">The source object.</param>
+            <param name="e">The event data.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.DataManager.OnTestMethodStarting(System.Object,Microsoft.Silverlight.Testing.Harness.TestMethodStartingEventArgs)">
+            <summary>
+            Process the start of a test method.
+            </summary>
+            <param name="sender">The source object.</param>
+            <param name="e">The event data.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.DataManager.OnTestMethodCompleted(System.Object,Microsoft.Silverlight.Testing.Harness.TestMethodCompletedEventArgs)">
+            <summary>
+            Process the completion of test methods.
+            </summary>
+            <param name="sender">The source object.</param>
+            <param name="e">The event data.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.DataManager.ProcessResult(Microsoft.Silverlight.Testing.Harness.ScenarioResult)">
+            <summary>
+            Process a result.
+            </summary>
+            <param name="result">The result data.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.DataManager.GetAssemblyModel(Microsoft.Silverlight.Testing.UnitTesting.Metadata.IAssembly)">
+            <summary>
+            Gets or creates the data model object for an assembly.
+            </summary>
+            <param name="assembly">The test assembly.</param>
+            <returns>Returns the data object.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.DataManager.GetClassModel(Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass)">
+            <summary>
+            Gets or creates the data model object for a test class.
+            </summary>
+            <param name="testClass">The test class.</param>
+            <returns>Returns the data object.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.DataManager.GetMethodModel(Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod,Microsoft.Silverlight.Testing.Client.TestClassData)">
+            <summary>
+            Gets or creates the data model object for a test method.
+            </summary>
+            <param name="testMethod">The test method.</param>
+            <param name="parentTestClass">The parent test class data object.</param>
+            <returns>Returns the data object.</returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.DataManager.UnitTestHarness">
+            <summary>
+            Gets the unit test harness instance.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.DataManager.Data">
+            <summary>
+            Gets the unit test model.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.TestAssemblyData">
+            <summary>
+            A data object storing the hierarchical results for a test assembly in a
+            test run.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.PropertyChangedBase">
+            <summary>
+            A base class for model objects that implement the property
+            changed interface, to simplify calling the change handlers,
+            and cache the underlying event argument instances.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.PropertyChangedBase._argumentInstances">
+            <summary>
+            A static set of change argument instances, eventually
+            storing one argument instance for each property name to
+            reduce churn at runtime.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.PropertyChangedBase.NotifyPropertyChanged(System.String)">
+            <summary>
+            Notify any listeners that the property value has changed.
+            </summary>
+            <param name="propertyName">The property name.</param>
+        </member>
+        <member name="E:Microsoft.Silverlight.Testing.Client.PropertyChangedBase.PropertyChanged">
+            <summary>
+            The property changed event.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.IProvideResultReports">
+            <summary>
+            A type that provides a string result report.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.IProvideResultReports.GetResultReport">
+            <summary>
+            Generates a simple text result report for the metadata.
+            </summary>
+            <returns>Reports a text report.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TestAssemblyData.#ctor(Microsoft.Silverlight.Testing.UnitTesting.Metadata.IAssembly)">
+            <summary>
+            Initializes a new instance of the TestAssemblyData type.
+            </summary>
+            <param name="testAssembly">The test assembly metadata.</param>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestAssemblyData._expanded">
+            <summary>
+            Backing field for the expanded property.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestAssemblyData._passed">
+            <summary>
+            Backing field for a passed value.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestAssemblyData._classes">
+            <summary>
+            Backing store for the set of test class.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TestAssemblyData.GetResultReport">
+            <summary>
+            Retrieves the results report.
+            </summary>
+            <returns>Returns a string containing the report.</returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestAssemblyData.IsExpanded">
+            <summary>
+            Gets or sets a value indicating whether the item is expanded in
+            a hierarchical display.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestAssemblyData.IsChecked">
+            <summary>
+            Gets or sets the checked value. Don't think this is actually used.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestAssemblyData.Passed">
+            <summary>
+            Gets or sets a value indicating whether the test passed. If failed,
+            will propagate to the parent metadata object.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestAssemblyData.Name">
+            <summary>
+            Gets the name of the assembly.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestAssemblyData.TestClasses">
+            <summary>
+            Gets an observable collection of test class data objects.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.TestMethodData">
+            <summary>
+            A data object that generates property change notifications and can
+            be used for rich data binding to test results. Does keep a reference
+            to all results.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestMethodData._metadata">
+            <summary>
+            Stores the test method metadata.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestMethodData._parent">
+            <summary>
+            Parent data object.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestMethodData._isRunning">
+            <summary>
+            A value indicating whether the test is currently executing.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestMethodData._result">
+            <summary>
+            The test outcome.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestMethodData._previous">
+            <summary>
+            Backing field for linked data.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestMethodData._next">
+            <summary>
+            Backing field for linked data.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestMethodData._previousFailure">
+            <summary>
+            Backing field for linked data.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestMethodData._nextFailure">
+            <summary>
+            Backing field for linked data.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TestMethodData.#ctor(Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod,Microsoft.Silverlight.Testing.Client.TestClassData)">
+            <summary>
+            Initializes a new instance of the TestMethodData type.
+            </summary>
+            <param name="testMethod">The test method metadata.</param>
+            <param name="parent">The test class that is the parent object.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TestMethodData.CheckForKnownBugs">
+            <summary>
+            Runs through the metadata for bugs.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestMethodData._knownBugs">
+            <summary>
+            Backing field for known bugs.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestMethodData._fixedBugs">
+            <summary>
+            Backing field for bugs that are marked fixed.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TestMethodData.EvaluateNotable">
+            <summary>
+            Calculates whether the item is considered "notable", in that it
+            should have a visual cue or hint for the user.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestMethodData._isNotable">
+            <summary>
+            Stores a value indicating whether the result is notable.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestMethodData._checked">
+            <summary>
+            Backing field for the checked property.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestMethodData._expanded">
+            <summary>
+            Backing field for the expanded property.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TestMethodData.GetResultReport">
+            <summary>
+            Retrieves the results report.
+            </summary>
+            <returns>Returns a string containing the report.</returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestMethodData.Result">
+            <summary>
+            Gets or sets the result of the test method.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestMethodData.KnownBugs">
+            <summary>
+            Gets the known bugs for display in the UI.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestMethodData.FixedBugs">
+            <summary>
+            Gets the fixed bugs for display.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestMethodData.SimplifiedExpectedExceptionName">
+            <summary>
+            Gets the expected exception name for a negative test, if any.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestMethodData.SimplifiedExceptionStackTrace">
+            <summary>
+            Gets a simplified exception stack trace that omits the trace below
+            the invoke of the test method by the test framework.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestMethodData.SimplifiedExceptionName">
+            <summary>
+            Gets the short, simple name of the exception type recorded in the
+            test result, if any.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestMethodData.HasOutcome">
+            <summary>
+            Gets a value indicating whether the method has results.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestMethodData.Passed">
+            <summary>
+            Gets a value indicating whether the method has passed. Returns 
+            true until there is a result.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestMethodData.IsRunning">
+            <summary>
+            Gets or sets a value indicating whether the test method is running.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestMethodData.IsNotable">
+            <summary>
+            Gets or sets a value indicating whether the result is notable. 
+            Notable is defined as either currently running, or not having 
+            passed. This can allow a user interface to react to an 
+            interesting result.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestMethodData.Parent">
+            <summary>
+            Gets the parent data object.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestMethodData.Metadata">
+            <summary>
+            Gets an instance of the actual metadata object.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestMethodData.Name">
+            <summary>
+            Gets the name of the test method.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestMethodData.HasDescriptionVisibility">
+            <summary>
+            Gets a visibility value to allow for easy showing or
+            hiding of a user interface component that displays the
+            description.
+            </summary>
+            <returns>Returns a visibility value.</returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestMethodData.ReadableElapsedTime">
+            <summary>
+            Gets the elapsed time in a readable format.
+            </summary>
+            <returns>Returns a string of the readable time elapsed.</returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestMethodData.Description">
+            <summary>
+            Gets the description of the test method.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestMethodData.IsChecked">
+            <summary>
+            Gets or sets a value indicating whether the item is checked in the
+            user interface.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestMethodData.IsExpanded">
+            <summary>
+            Gets or sets a value indicating whether the item is expanded in
+            a hierarchical display.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestMethodData.PreviousResult">
+            <summary>
+            Gets or sets the previous result.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestMethodData.NextResult">
+            <summary>
+            Gets or sets the next result.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestMethodData.PreviousFailingResult">
+            <summary>
+            Gets or sets the previous failing result.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestMethodData.NextFailingResult">
+            <summary>
+            Gets or sets the next failing result.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Service.CodeCoverageProvider">
+            <summary>
+            A provider of code coverage information to an external process.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Service.ProviderBase">
+            <summary>
+            The base class for test service providers.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.ProviderBase.#ctor(Microsoft.Silverlight.Testing.Harness.TestServiceProvider,System.String)">
+            <summary>
+            Initializes a new base provider class.
+            </summary>
+            <param name="provider">The owning test service provider.</param>
+            <param name="displayName">The display name of the service.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.ProviderBase.Initialize">
+            <summary>
+            Initializes the provider.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.ProviderBase.IncrementBusyServiceCounter">
+            <summary>
+            Increments the busy service counter.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.ProviderBase.DecrementBusyServiceCounter">
+            <summary>
+            Decrements the busy service counter.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.ProviderBase.InvokeMethod(System.String,System.Object[])">
+            <summary>
+            Invokes a method on this provider using reflection.
+            </summary>
+            <param name="methodName">The name of the method.</param>
+            <param name="parameters">The optional parameters.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.ProviderBase.OnInitializeCompleted">
+            <summary>
+            Call the InitializeCompleted event.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.ProviderBase.Callback(System.Action{Microsoft.Silverlight.Testing.Service.ServiceResult},Microsoft.Silverlight.Testing.Service.ServiceResult)">
+            <summary>
+            Performs a callback.  Null action and/or result are permitted.
+            </summary>
+            <param name="action">The optional callback action.</param>
+            <param name="result">The result to pass back.</param>
+        </member>
+        <member name="E:Microsoft.Silverlight.Testing.Service.ProviderBase.InitializeCompleted">
+            <summary>
+            Event fired once initialization is complete.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Service.ProviderBase.DisplayName">
+            <summary>
+            Gets the display name for the provider.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Service.ProviderBase.TestService">
+            <summary>
+            Gets the owning test service.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Service.ProviderBase.Initialized">
+            <summary>
+            Gets a value indicating whether the provider has been initialized 
+            yet.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.CodeCoverageProvider.#ctor(Microsoft.Silverlight.Testing.Harness.TestServiceProvider)">
+            <summary>
+            Initializes a new code coverage provider.
+            </summary>
+            <param name="testService">The test service.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.CodeCoverageProvider.SaveCoverageData(System.String,System.Action{Microsoft.Silverlight.Testing.Service.ServiceResult})">
+            <summary>
+            Save string-based code coverage data.
+            </summary>
+            <param name="data">The code coverage data, as a string.</param>
+            <param name="callback">The callback action.</param>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Service.EnvironmentProvider">
+            <summary>
+            A provider of environment variables and environmental information that 
+            uses the test service provider infrastructure.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.EnvironmentProvider.#ctor(Microsoft.Silverlight.Testing.Harness.TestServiceProvider)">
+            <summary>
+            Initializes a new environment provider.
+            </summary>
+            <param name="testService">The test service.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.EnvironmentProvider.GetEnvironmentVariable(System.String,System.Action{Microsoft.Silverlight.Testing.Service.ServiceResult})">
+            <summary>
+            Retrieve an environment variable from the system.
+            </summary>
+            <param name="name">The variable name.</param>
+            <param name="callback">The callback action.</param>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Extensions">
+            <summary>
+            Miscellaneous internal extension methods.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Extensions.TryGetAssemblyAttribute``1(System.Reflection.Assembly,``0@)">
+            <summary>
+            Attempts to retrieve a custom assembly attribute.
+            </summary>
+            <typeparam name="T">The type of attribute to retrieve.</typeparam>
+            <param name="assembly">The assembly reference.</param>
+            <param name="attribute">An out attribute reference.</param>
+            <returns>Returns true if the attribute is found.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Extensions.ToTransformedDictionary``3(System.Collections.Generic.IEnumerable{``0},System.Func{``0,``1},System.Func{``0,``2})">
+            <summary>
+            Transform the XElement into a dictionary of key/value pairs.
+            </summary>
+            <typeparam name="T">The type of enumeration.</typeparam>
+            <typeparam name="K">The key type.</typeparam>
+            <typeparam name="R">The value type.</typeparam>
+            <param name="that">The root enumerable.</param>
+            <param name="keySelector">The key selector.</param>
+            <param name="itemSelector">The item selector.</param>
+            <returns>Returns a new dictionary.</returns>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Service.IsolatedStorageSettingsProvider">
+            <summary>
+            A type that stores global settings in the isolated storage for the 
+            application. An implementation of the <see cref="T:Microsoft.Silverlight.Testing.Service.SettingsProvider"/> 
+            type.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Service.SettingsProvider">
+            <summary>
+            A provider of string dictionary values.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.SettingsProvider.#ctor(Microsoft.Silverlight.Testing.Harness.TestServiceProvider)">
+            <summary>
+            Initializes a new SettingsProvider object.
+            </summary>
+            <param name="testService">The test service.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.SettingsProvider.#ctor(Microsoft.Silverlight.Testing.Harness.TestServiceProvider,System.String)">
+            <summary>
+            Initializes a new SettingsProvider object.
+            </summary>
+            <param name="testService">The test service.</param>
+            <param name="serviceName">The service name.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.SettingsProvider.SaveSettings(System.Action{Microsoft.Silverlight.Testing.Service.ServiceResult})">
+            <summary>
+            Saves the settings.
+            </summary>
+            <remarks>Classes that inherit from SettingsProvider: hide this 
+            function.  Do not call up through to this base method.</remarks>
+            <param name="callback">The service callback.</param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Service.SettingsProvider.Settings">
+            <summary>
+            Gets the settings dictionary.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Service.SettingsProvider.IsReadOnly">
+            <summary>
+            Gets a value indicating whether the settings are read-only.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Service.SettingsProvider.SourceName">
+            <summary>
+            Gets the settings source for end-user display.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Service.IsolatedStorageSettingsProvider.TestFrameworkSettingsKeyName">
+            <summary>
+            The unique key used for storing the test framework's settings 
+            dictionary.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Service.IsolatedStorageSettingsProvider._settings">
+            <summary>
+            The underlying settings object.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.IsolatedStorageSettingsProvider.#ctor(Microsoft.Silverlight.Testing.Harness.TestServiceProvider)">
+            <summary>
+            Initializes a new isolated storage settings provider.
+            </summary>
+            <param name="testService">The test service instance.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.IsolatedStorageSettingsProvider.Initialize">
+            <summary>
+            Initializes the isolated storage settings provider.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.IsolatedStorageSettingsProvider.SaveSettings(System.Action{Microsoft.Silverlight.Testing.Service.ServiceResult})">
+            <summary>
+            Saves the current settings values.
+            </summary>
+            <param name="callback">The service completion callback.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.IsolatedStorageSettingsProvider.LoadSettings">
+            <summary>
+            Recalls the stored settings values from isolated storage.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.IsolatedStorageSettingsProvider.InitializeSettings">
+            <summary>
+            Initialize the isolated storage application settings object.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Service.ServiceResult">
+            <summary>
+            Result object for asynchronous test service response.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.ServiceResult.CreateExceptionalResult(System.Exception)">
+            <summary>
+            Creates a new ServiceResult object for a failed result, the 
+            sets the exception.
+            </summary>
+            <param name="except">The Exception object.</param>
+            <returns>Returns a new ServiceResult with the Exception set.</returns>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Service.ServiceResult._result">
+            <summary>
+            The result LINQ element.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.ServiceResult.#ctor">
+            <summary>
+            Initializes a new instance of the ServiceResult class.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.ServiceResult.ProcessResponse">
+            <summary>
+            Process the response text.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.ServiceResult.TryGetElement">
+            <summary>
+            Attempt to process and return the root element of a successful 
+            request. Returns null if there was an Exception.
+            </summary>
+            <returns>The root XML element of the response.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.ServiceResult.SetResult(Microsoft.Silverlight.Testing.Service.SimpleXElement)">
+            <summary>
+            Sets the result.
+            </summary>
+            <param name="result">The LINQ element for the result.</param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Service.ServiceResult.Processed">
+            <summary>
+            Gets or sets a value indicating whether the result has been 
+            processed.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Service.ServiceResult.Exception">
+            <summary>
+            Gets or sets the exception intercepted or generated during the 
+            request or 
+            processing timeframe.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Service.ServiceResult.Element">
+            <summary>
+            Gets the root XElement of the test service result.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Service.ServiceResult.Successful">
+            <summary>
+            Gets a value indicating whether the request was successful.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Service.ServiceType">
+            <summary>
+            The type of test service in use.  Used by the more advanced service 
+            scenarios in SilverlightTestServiceProvider.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Service.ServiceType.None">
+            <summary>
+            No service, or unknown service type.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Service.ServiceType.Direct">
+            <summary>
+            A direct connection, be it the file system, isolated storage, or 
+            similar.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Service.ServiceType.WebService">
+            <summary>
+            A web service.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Service.SilverlightTestService">
+            <summary>
+            The Silverlight test service provider is built for compilation with 
+            Silverlight builds of the test framework.  Populates with the important 
+            providers for web browser-hosted test runs.
+            </summary>
+            <summary>
+            The Silverlight test service provider is built for compilation with 
+            Silverlight builds of the test framework.  Populates with the important 
+            providers for web browser-hosted test runs.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.TestServiceProvider">
+            <summary>
+            A system that provides test services.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestServiceProvider._services">
+            <summary>
+            The dictionary of services registered with this provider instance.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestServiceProvider.#ctor">
+            <summary>
+            Initializes a new test service provider instance.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestServiceProvider.Initialize">
+            <summary>
+            Initializes the provider and all of its test services.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestServiceProvider.InitializeAllServices">
+            <summary>
+            Initialize all services and features synchronously.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestServiceProvider.RegisterService(Microsoft.Silverlight.Testing.Service.TestServiceFeature,Microsoft.Silverlight.Testing.Service.ProviderBase)">
+            <summary>
+            Register a new service that the test service should expose.
+            </summary>
+            <param name="feature">Known feature type.</param>
+            <param name="serviceInstance">Instance of the feature's 
+            <see cref="T:Microsoft.Silverlight.Testing.Service.ProviderBase"/> type.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestServiceProvider.RegisterService(System.String,Microsoft.Silverlight.Testing.Service.ProviderBase)">
+            <summary>
+            Register a new service that the test service should expose.
+            </summary>
+            <param name="featureName">String name of the feature if the known 
+            enum value does not exist.</param>
+            <param name="serviceInstance">Instance of the feature's 
+            <see cref="T:Microsoft.Silverlight.Testing.Service.ProviderBase"/> type.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestServiceProvider.UnregisterService(Microsoft.Silverlight.Testing.Service.TestServiceFeature)">
+            <summary>
+            Unregisters a feature.
+            </summary>
+            <param name="feature">Known feature type.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestServiceProvider.UnregisterService(System.String)">
+            <summary>
+            Unregisters a feature.
+            </summary>
+            <param name="featureName">Known feature type string.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestServiceProvider.HasService(Microsoft.Silverlight.Testing.Service.TestServiceFeature)">
+            <summary>
+            Check if a requested feature is supported by the test service 
+            provider.
+            </summary>
+            <param name="feature">Feature of interest.</param>
+            <returns>A value indicating whether the feature exists.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestServiceProvider.HasService(System.String)">
+            <summary>
+            Check if a requested feature is supported by the test service 
+            provider.
+            </summary>
+            <param name="featureName">Feature of interest.</param>
+            <returns>A value indicating whether the feature exists.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestServiceProvider.GetService``1(Microsoft.Silverlight.Testing.Service.TestServiceFeature)">
+            <summary>
+            Retrieve a feature.  An exception will be thrown if the service 
+            does not exist.
+            </summary>
+            <typeparam name="TService">Type of a service, ProviderBase.</typeparam>
+            <param name="feature">The feature of interest.</param>
+            <returns>Returns the feature, cast properly.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestServiceProvider.GetService(Microsoft.Silverlight.Testing.Service.TestServiceFeature)">
+            <summary>
+            Retrieve a feature.
+            </summary>
+            <param name="feature">Feature of interest.</param>
+            <returns>The feature's provider.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestServiceProvider.GetService(System.String)">
+            <summary>
+            Retrieve a feature.
+            </summary>
+            <param name="featureName">Feature of interest.</param>
+            <returns>The service or null if one was not present.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestServiceProvider.RequireService(Microsoft.Silverlight.Testing.Harness.TestServiceProvider,System.Type)">
+            <summary>
+            Require a feature, or throw an exception if it isn't available.
+            </summary>
+            <param name="feature">Feature of interest.</param>
+            <param name="requiredType">The required type.</param>
+            <returns>The service or null if one was not present.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestServiceProvider.RequireService(System.String,System.Type)">
+            <summary>
+            Require a feature, or throw an exception if it isn't available.
+            </summary>
+            <param name="featureName">Feature of interest.</param>
+            <param name="requiredType">The required type.</param>
+            <returns>The service or null if one was not present.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestServiceProvider.RequireService(Microsoft.Silverlight.Testing.Service.TestServiceFeature)">
+            <summary>
+            Require a feature or interest.
+            </summary>
+            <param name="feature">Feature of interest.</param>
+            <returns>The service or null if one was not present.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestServiceProvider.RequireService(System.String)">
+            <summary>
+            Requires a service.
+            </summary>
+            <param name="featureName">Feature of interest.</param>
+            <returns>The service or null if one was not present.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestServiceProvider.RequireServiceInternal(System.Object)">
+            <summary>
+            Check for and required the presence of a service.  Throws an 
+            InvalidOperationException message if the service is unavailable.
+            </summary>
+            <param name="feature">Feature of interest.</param>
+            <returns>The service or null if one was not present.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestServiceProvider.RequireServiceInternal(System.Object,System.Type)">
+            <summary>
+            Require a specific feature, and that it can be cast properly.
+            </summary>
+            <param name="feature">Feature of interest.</param>
+            <param name="cast">The type to verify assignment for a cast.</param>
+            <returns>The service or null if one was not present.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestServiceProvider.GetServiceInternal(System.Object)">
+            <summary>
+            Looks for a specific service.
+            </summary>
+            <param name="feature">Feature of interest.</param>
+            <returns>The service or null if one was not present.</returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.TestServiceProvider.UniqueTestRunIdentifier">
+            <summary>
+            Gets or sets a unique test run identifier, if any is present.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.TestServiceProvider.BusyServiceReferenceCounter">
+            <summary>
+            Gets or sets an integer value that can be used to manage simple
+            reference counting services.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Service.SilverlightTestService._webService">
+            <summary>
+            The service verifier and information.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.SilverlightTestService.#ctor">
+            <summary>
+            Initializes a new instance of the SilverlightTestService class.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.SilverlightTestService.#ctor(Microsoft.Silverlight.Testing.UnitTestSettings)">
+            <summary>
+            Initializes a new instance of the SilverlightTestService class.
+            </summary>
+            <param name="settings">Unit test settings to read the service path
+            and other information from.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.SilverlightTestService.Initialize">
+            <summary>
+            Initializes the Silverlight test service.  Performs a service check 
+            if needed before initializing the other providers.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.SilverlightTestService.SetCustomIdentification">
+            <summary>
+            Sets the custom ID information for the test run, if passed into 
+            the run.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.SilverlightTestService.SetServicePath(Microsoft.Silverlight.Testing.UnitTestSettings)">
+            <summary>
+            Determine the service path to attempt to use, and prepares the 
+            verification object using those parameters.
+            </summary>
+            <param name="settings">Unit test settings object to try and read
+            settings from.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.SilverlightTestService.AttemptServiceConnection">
+            <summary>
+            Pauses the initialization process to attempt a service connection. 
+            The result will alter the underlying ServiceType being used by 
+            this provider to ensure a fallback experience can be used.  
+            
+            This verification step will block the initialization and entire 
+            test run until it continues.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.SilverlightTestService.ContinueInitialization">
+            <summary>
+            Continues the initialization process for the test service provider.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.SilverlightTestService.PopulateProviders">
+            <summary>
+            Populates with the standard providers for Silverlight in-browser 
+            testing.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Service.SilverlightTestService.ServiceType">
+            <summary>
+            Gets the service type that is in use.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Service.SilverlightTestService.WebService">
+            <summary>
+            Gets the web service proxy.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Service.SilverlightTestService.ServiceVerifier">
+            <summary>
+            A special verification class used by SilverlightTestService.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Service.SilverlightTestService.ServiceVerifier.VerificationServiceName">
+            <summary>
+            The name of a simple 'ping' method exposed by the service.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.SilverlightTestService.ServiceVerifier.Verify(System.Action,System.Action)">
+            <summary>
+            Attempts to verify the service connection.  Calls the proper 
+            success/failure Action once a verification result is possible.
+            </summary>
+            <param name="success">The Action to call upon connection 
+            verification.</param>
+            <param name="failure">An Action to call upon failure.</param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Service.SilverlightTestService.ServiceVerifier.Hostname">
+            <summary>
+            Gets or sets the service hostname.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Service.SilverlightTestService.ServiceVerifier.Port">
+            <summary>
+            Gets or sets the service port.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Service.SilverlightTestService.ServiceVerifier.ServicePath">
+            <summary>
+            Gets or sets path to the simple POX service.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Service.SilverlightTestService.ServiceVerifier.ServiceUri">
+            <summary>
+            Gets the URI to the service.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Service.TestReportingProvider">
+            <summary>
+            A test service that reports test run results.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.TestReportingProvider.#ctor(Microsoft.Silverlight.Testing.Harness.TestServiceProvider)">
+            <summary>
+            Initializes a new reporting provider instance.
+            </summary>
+            <param name="testService">The test service.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.TestReportingProvider.WriteLog(System.Action{Microsoft.Silverlight.Testing.Service.ServiceResult},System.String,System.String)">
+            <summary>
+            Begins a call to the test service to write to the log.
+            </summary>
+            <param name="callback">The callback, used to read or verify results 
+            from the service call.</param>
+            <param name="logName">The name of the log to write.</param>
+            <param name="content">The log file content.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.TestReportingProvider.ReportFinalResult(System.Action{Microsoft.Silverlight.Testing.Service.ServiceResult},System.Boolean,System.Int32,System.Int32,System.String)">
+            <summary>
+            Begins a call to the test service to report a test run's results.
+            </summary>
+            <param name="callback">The callback, used to read or verify results 
+            from the service call.</param>
+            <param name="failure">A value indicating whether the test run was a 
+            failure.</param>
+            <param name="failures">The failed scenario count.</param>
+            <param name="totalScenarios">The total scenario count.</param>
+            <param name="message">Any message to report along with the failure.</param>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Service.TestServiceFeature">
+            <summary>
+            Set of known, well-defined test service features.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Service.TestServiceFeature.CodeCoverageReporting">
+            <summary>
+            Code coverage reporting.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Service.TestServiceFeature.RunSettings">
+            <summary>
+            Provides run parameters and settings.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Service.TestServiceFeature.TestReporting">
+            <summary>
+            Provides test reporting services.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Service.TestServiceFeature.EnvironmentServices">
+            <summary>
+            Provides environment information.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Service.WebCodeCoverageProvider">
+            <summary>
+            A provider of code coverage information to an external process.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Service.WebCodeCoverageProvider.MethodName_SaveCodeCoverage">
+            <summary>
+            The MethodName_SaveCodeCoverage method name.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.WebCodeCoverageProvider.#ctor(Microsoft.Silverlight.Testing.Harness.TestServiceProvider)">
+            <summary>
+            Initializes a new code coverage provider.
+            </summary>
+            <param name="testService">The test service.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.WebCodeCoverageProvider.SaveCoverageData(System.String,System.Action{Microsoft.Silverlight.Testing.Service.ServiceResult})">
+            <summary>
+            Save string-based code coverage data.
+            </summary>
+            <param name="data">The code coverage data, as a string.</param>
+            <param name="callback">The callback action.</param>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Service.WebEnvironmentProvider">
+            <summary>
+            A provider of environment variables and environmental information that 
+            uses the test service provider infrastructure.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Service.WebEnvironmentProvider.MethodName_GetEnvironmentVariable">
+            <summary>
+            The MethodName_GetEnvironmentVariable method name.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.WebEnvironmentProvider.#ctor(Microsoft.Silverlight.Testing.Service.SilverlightTestService)">
+            <summary>
+            Initializes a new environment provider.
+            </summary>
+            <param name="testService">The web test service.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.WebEnvironmentProvider.GetEnvironmentVariable(System.String,System.Action{Microsoft.Silverlight.Testing.Service.ServiceResult})">
+            <summary>
+            Retrieve an environment variable from the system.
+            </summary>
+            <param name="name">The variable name.</param>
+            <param name="callback">The callback action.</param>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Service.WebServiceResult">
+            <summary>
+            Result object for asynchronous test service response that uses a simple 
+            web service / POX call.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.WebServiceResult.#ctor(System.Net.WebRequest,System.Net.WebResponse)">
+            <summary>
+            Initializes a new web service result.
+            </summary>
+            <param name="request">The request object.</param>
+            <param name="response">The response object.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.WebServiceResult.#ctor(System.Net.WebRequest,System.Net.WebResponse,System.Object)">
+            <summary>
+            Initializes a new web service result.
+            </summary>
+            <param name="request">The request object.</param>
+            <param name="response">The response object.</param>
+            <param name="details">The details to associate for debugging 
+            purposes.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.WebServiceResult.ReadHttpWebResponse">
+            <summary>
+            Reads the web response, if successful, and parses out the string 
+            content.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.WebServiceResult.ProcessResponse">
+            <summary>
+            Process the response text.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Service.WebServiceResult.Request">
+            <summary>
+            Gets the web request associated with the service call.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Service.WebServiceResult.Response">
+            <summary>
+            Gets the web response associated with the service call.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Service.WebServiceResult.RequestDetails">
+            <summary>
+            Gets the details of the request, used for interactive debugging 
+            sessions only.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Service.WebServiceResult.ResponseString">
+            <summary>
+            Gets the string retrieved from the response.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Service.WebSettingsProvider">
+            <summary>
+            A test service that reads command line settings.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Service.WebSettingsProvider.MethodName_GetRunParameters">
+            <summary>
+            Name of the method MethodName_GetRunParameters.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.WebSettingsProvider.#ctor(Microsoft.Silverlight.Testing.Harness.TestServiceProvider)">
+            <summary>
+            Initializes a new settings provider instance.
+            </summary>
+            <param name="testService">The test service.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.WebSettingsProvider.Initialize">
+            <summary>
+            Initialize the web settings provider.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.WebSettingsProvider.ReadRunParameters(Microsoft.Silverlight.Testing.Service.ServiceResult)">
+            <summary>
+            Read the run parameters.
+            </summary>
+            <param name="result">The service result.</param>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Service.WebTestReportingProvider">
+            <summary>
+            A test service that reports test run results.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Service.WebTestReportingProvider.MethodName_ReportTestResults">
+            <summary>
+            Name of the method MethodName_ReportTestResults.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Service.WebTestReportingProvider.MethodName_WriteLog">
+            <summary>
+            Name of the method MethodName_WriteLog.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.WebTestReportingProvider.#ctor(Microsoft.Silverlight.Testing.Harness.TestServiceProvider)">
+            <summary>
+            Initializes a new reporting provider instance.
+            </summary>
+            <param name="testService">The test service.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.WebTestReportingProvider.WriteLog(System.Action{Microsoft.Silverlight.Testing.Service.ServiceResult},System.String,System.String)">
+            <summary>
+            Begins a call to the test service to write to the log.
+            </summary>
+            <param name="callback">The callback, used to read or verify results 
+            from the service call.</param>
+            <param name="logName">The name of the log to write.</param>
+            <param name="content">The log file content.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.WebTestReportingProvider.ReportFinalResult(System.Action{Microsoft.Silverlight.Testing.Service.ServiceResult},System.Boolean,System.Int32,System.Int32,System.String)">
+            <summary>
+            Begins a call to the test service to report a test run's results.
+            </summary>
+            <param name="callback">The callback, used to read or verify results 
+            from the service call.</param>
+            <param name="failure">A value indicating whether the test run was a 
+            failure.</param>
+            <param name="failures">The failed scenario count.</param>
+            <param name="totalScenarios">The total scenario count.</param>
+            <param name="message">Any message to report along with the failure.</param>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Service.WebTestService">
+            <summary>
+            Provides out-of-process access to operating system functions and other 
+            services such as visual verification, if present.
+            </summary>
+            <summary>
+            Provides out-of-process access to operating system functions and other 
+            services such as visual verification, if present.
+            </summary>
+            <summary>
+            Provides out-of-process access to operating system functions and other 
+            services such as visual verification, if present.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Service.WebTestService._serviceUri">
+            <summary>
+            The service address.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Service.WebTestService._sync">
+            <summary>
+            The synchronization context.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.WebTestService.#ctor(System.Uri)">
+            <summary>
+            Initializes a new plain-old-XML test service.  This assumes that 
+            the caller has already verifier that a service is present and 
+            responding at the service address.
+            </summary>
+            <param name="serviceUri">The base service URI, such as 
+            "scheme://hostname:port/servicePath/".</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.WebTestService.CreateUri(System.String,System.Collections.Generic.Dictionary{System.String,System.String})">
+            <summary>
+            Creates a simple REST-style Uri given the method/service name and 
+            a dictionary of key/value pairs to send as arguments.
+            </summary>
+            <param name="service">The method/service name.</param>
+            <param name="arguments">A set of key/value pairs.</param>
+            <returns>Returns a new Uri.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.WebTestService.CreateUri(System.String,System.Collections.Generic.Dictionary{System.String,System.String},System.String)">
+            <summary>
+            Creates a simple REST-style Uri given the method/service name and 
+            a dictionary of key/value pairs to send as arguments.
+            </summary>
+            <param name="service">The method/service name.</param>
+            <param name="arguments">A set of key/value pairs.</param>
+            <param name="queryString">Optional query string.</param>
+            <returns>Returns a new Uri.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.WebTestService.Dictionary(System.Object[])">
+            <summary>
+            Builds a simple dictionary from parameters.  The value follows the 
+            key parameter.  {[key, value], } ...
+            
+            The ToString() method is called on every object.
+            </summary>
+            <param name="parameters">The parameters.</param>
+            <returns>Returns a key/value dictionary from the parameters.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.WebTestService.CallMethod(System.String,System.Action{Microsoft.Silverlight.Testing.Service.ServiceResult})">
+            <summary>
+            Begin a POX method call.  The callback is used with the result when 
+            it becomes available.
+            </summary>
+            <param name="method">The method name.</param>
+            <param name="callback">The callback action.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.WebTestService.CallMethod(System.String,System.Collections.Generic.Dictionary{System.String,System.String},System.Action{Microsoft.Silverlight.Testing.Service.ServiceResult})">
+            <summary>
+            Begin a POX method call.  The callback is used with the result when 
+            it becomes available.
+            </summary>
+            <param name="method">The method name.</param>
+            <param name="arguments">Dictionary of key/value pairs.</param>
+            <param name="callback">The callback action.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.WebTestService.CallMethod(System.String,System.Collections.Generic.Dictionary{System.String,System.String},System.String,System.Action{Microsoft.Silverlight.Testing.Service.ServiceResult})">
+            <summary>
+            Begin a POX method call.  The callback is used with the result when 
+            it becomes available.
+            </summary>
+            <param name="method">The method name.</param>
+            <param name="arguments">Dictionary of key/value pairs.</param>
+            <param name="postData">Optional string that will transform the 
+            request to a POST request.</param>
+            <param name="callback">The callback action.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.WebTestService.CallMethodPostContinue(System.IAsyncResult)">
+            <summary>
+            The intermediate step that writes the POST data and then continues 
+            the web request.
+            </summary>
+            <param name="ar">The async result object.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.WebTestService.ResponseCallback(System.IAsyncResult)">
+            <summary>
+            Process the response callback from a POX method call.
+            </summary>
+            <param name="ar">The async result object.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.WebTestService.UserInterfaceThreadCallback(System.Object)">
+            <summary>
+            On the UI thread, invoke the callback action with the result.
+            </summary>
+            <param name="state">The temporary state object.</param>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Service.WebTestService.CrossThreadState">
+            <summary>
+            A simple type to store the state information for the cross-thread 
+            callback.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.WebTestService.CrossThreadState.#ctor(System.Action{Microsoft.Silverlight.Testing.Service.ServiceResult},Microsoft.Silverlight.Testing.Service.WebServiceResult)">
+            <summary>
+            Initializes a new TemporaryStateObject object.
+            </summary>
+            <param name="callback">The callback action.</param>
+            <param name="result">The result object.</param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Service.WebTestService.CrossThreadState.Callback">
+            <summary>
+            Gets the callback action.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Service.WebTestService.CrossThreadState.Result">
+            <summary>
+            Gets the result object.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Service.WebTestService.RequestData">
+            <summary>
+            The request data class, stores information used in a request for 
+            associating this data with the response.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.WebTestService.RequestData.#ctor(System.Uri,System.Net.HttpWebRequest,System.Action{Microsoft.Silverlight.Testing.Service.ServiceResult})">
+            <summary>
+            Initializes a new request data object.
+            </summary>
+            <param name="uri">The request Uri.</param>
+            <param name="request">The request object.</param>
+            <param name="callback">The callback action.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Service.WebTestService.RequestData.ConvertToResult(System.Net.WebResponse)">
+            <summary>
+            Converts the request data object into a web service result 
+            object.
+            </summary>
+            <param name="response">The response object.</param>
+            <returns>Returns a new WebServiceResult instance.</returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Service.WebTestService.RequestData.PostData">
+            <summary>
+            Gets or sets the optional post data for the request.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Service.WebTestService.RequestData.Request">
+            <summary>
+            Gets the web request.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Service.WebTestService.RequestData.RequestUri">
+            <summary>
+            Gets the request Uri.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Service.WebTestService.RequestData.Callback">
+            <summary>
+            Gets the callback action.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.FastRunDispatcher">
+            <summary>
+            A type which handles preparing the underlying dispatcher or timer from 
+            which the test work items execute.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.RunDispatcher">
+            <summary>
+            Handle calling into the test framework as needed to perform the test
+            run, process the internal test dispatcher queue, and keep execution
+            moving forward.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.RunDispatcher._runNextStep">
+            <summary>
+            Delegate that returns whether more work remains and runs the next
+            set of work.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.RunDispatcher._running">
+            <summary>
+            Backing field for a value indicaing whether the dispatcher should be
+            running.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.RunDispatcher.#ctor(System.Func{System.Boolean})">
+            <summary>
+            Creates a new RunMethodManager, taking in a conditional delegate to
+            run for each step to see if more work remains.
+            </summary>
+            <param name="runNextStep">
+            The conditional delegate that performs work and indicates whether
+            additional work remains.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.RunDispatcher.Create(System.Func{System.Boolean})">
+            <summary>
+            Create a new run method manager object.
+            </summary>
+            <param name="runNextStep">
+            Conditional indicating whether more work will remain after
+            performing the work.
+            </param>
+            <returns>
+            Returns the run method manager. Typically depends on the execution 
+            platform and environment.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.RunDispatcher.Create(System.Func{System.Boolean},System.Windows.Threading.Dispatcher)">
+            <summary>
+            Create a new run method manager object.
+            </summary>
+            <param name="runNextStep">
+            Conditional indicating whether more work will remain after
+            performing the work.
+            </param>
+            <param name="dispatcher">A Dispatcher instance.</param>
+            <returns>
+            Returns the run method manager. Typically depends on the execution 
+            platform and environment.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.RunDispatcher.Run">
+            <summary>
+            A completely synchronous implementation, unless overridden, that
+            calls RunNextStep() until the harness is finished.
+            
+            The default implementation will not work with a presentation-rich
+            test environment.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.RunDispatcher.RunNextStep">
+            <summary>
+            Calls a conditional delegate, and returns whether there is more work
+            to be done.
+            </summary>
+            <returns>
+            Returns a value indicating whether there is additional work
+            remaining after executing the current work.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.RunDispatcher.OnComplete">
+            <summary>
+            Calls the Complete event handler.
+            </summary>
+        </member>
+        <member name="E:Microsoft.Silverlight.Testing.Harness.RunDispatcher.Complete">
+            <summary>
+            Event that is called when all work is complete.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.RunDispatcher.IsRunning">
+            <summary>
+            Gets or sets a value indicating whether the dispatcher should be 
+            running.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.FastRunDispatcher._dispatcher">
+            <summary>
+            Stored Dispatcher instance.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.FastRunDispatcher.#ctor(System.Func{System.Boolean},System.Windows.Threading.Dispatcher)">
+            <summary>
+            Sets up a new run method manager.
+            </summary>
+            <param name="runNextStep">
+            Conditional delegate which returns true as long as there is 
+            additional work.
+            </param>
+            <param name="dispatcher">An instance of the dispatcher to use.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.FastRunDispatcher.Run">
+            <summary>
+            Begin the execution process by hooking up the underlying 
+            DispatcherTimer to call into the test framework regularly and 
+            perform test work items.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.TestClassData">
+            <summary>
+            A data object that generates property change notifications and can
+            be used for rich data binding to test results. Does keep a reference
+            to all results.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestClassData._parent">
+            <summary>
+            Parent object reference.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TestClassData.#ctor(Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass,Microsoft.Silverlight.Testing.Client.TestAssemblyData)">
+            <summary>
+            Initializes a new instance of the TestClassData type.
+            </summary>
+            <param name="testClass">The test class metadata.</param>
+            <param name="parent">The parent test assembly data object.</param>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestClassData._methods">
+            <summary>
+            Backing store for the set of test class.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestClassData._expanded">
+            <summary>
+            Backing field for the expanded property.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TestClassData.CollapseUnlessFailures">
+            <summary>
+            Collapses the test class node unless there is at least one child
+            test method that failed.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestClassData._passed">
+            <summary>
+            Backing field for a passed value.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TestClassData.GetResultReport">
+            <summary>
+            Retrieves the results report.
+            </summary>
+            <returns>Returns a string containing the report.</returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestClassData.Parent">
+            <summary>
+            Gets the parent data object.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestClassData.Name">
+            <summary>
+            Gets the name of the test class.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestClassData.Namespace">
+            <summary>
+            Gets the namespace for the test class.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestClassData.TestMethods">
+            <summary>
+            Gets an observable collection of test class data objects.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestClassData.IsExpanded">
+            <summary>
+            Gets or sets a value indicating whether the item is expanded in
+            a hierarchical display.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestClassData.IsChecked">
+            <summary>
+            Gets or sets the checked value. Don't think this is actually used.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestClassData.Passed">
+            <summary>
+            Gets or sets a value indicating whether the test passed. If failed,
+            will propagate to the parent metadata object.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.TestRunData">
+            <summary>
+            A data object that generates property change notifications and can
+            be used for rich data binding to test results. Does keep a reference
+            to all results.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestRunData._harness">
+            <summary>
+            The unit test harness instance.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestRunData._information">
+            <summary>
+            Backing field for information about the test application in use.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TestRunData.#ctor(Microsoft.Silverlight.Testing.Harness.UnitTestHarness)">
+            <summary>
+            Initializes a new instance of the test run results.
+            </summary>
+            <param name="unitTestHarness">The unit test harness.</param>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestRunData._assemblies">
+            <summary>
+            Backing store for the set of test assemblies.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestRunData._title">
+            <summary>
+            Title backing field.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestRunData._total">
+            <summary>
+            Stores the total number of expected scenarios.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestRunData._currentTestMethod">
+            <summary>
+            Stores the current test information.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestRunData._currentTest">
+            <summary>
+            Stores the current test information.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestRunData._runScenarios">
+            <summary>
+            Stores the number of run scenarios.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestRunData._failedScenarios">
+            <summary>
+            Count of failed scenarios.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestRunData._running">
+            <summary>
+            Backing field for whether the app is running.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestRunData.TestApplicationInformation">
+            <summary>
+            Gets the test application information instance.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestRunData.UnitTestHarness">
+            <summary>
+            Gets the unit test harness instance.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestRunData.TestAssemblies">
+            <summary>
+            Gets an observable collection of test assembly data objects.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestRunData.Title">
+            <summary>
+            Gets or sets the informational run title.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestRunData.TotalScenarios">
+            <summary>
+            Gets or sets the number of total scenarios.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestRunData.CurrentTestMethod">
+            <summary>
+            Gets or sets the current test name.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestRunData.CurrentTest">
+            <summary>
+            Gets or sets the current test name.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestRunData.RunScenarios">
+            <summary>
+            Gets or sets the number of run scenarios.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestRunData.FailedScenarios">
+            <summary>
+            Gets or sets the number of failed scenarios.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestRunData.PassedAndComplete">
+            <summary>
+            Gets a value indicating whether the run is complete and passed.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestRunData.Passed">
+            <summary>
+            Gets a value indicating whether all passing results have been
+            processed.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestRunData.PassedScenarios">
+            <summary>
+            Gets the number of passed scenarios, defined as the number of
+            run scenarios minus the number of failed scenarios tracked.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestRunData.IsDispatcherRunning">
+            <summary>
+            Gets a value indicating whether the dispatcher is currently running.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestRunData.IsRunning">
+            <summary>
+            Gets a value indicating whether the test run is in action.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.TestAssemblyCompletedEventArgs">
+            <summary>
+            Assembly complete event arguments.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.UnitTestHarnessEventArgs">
+            <summary>
+            Generic unit test harness event arguments base class that contains a
+            reference to the harness.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarnessEventArgs.#ctor(Microsoft.Silverlight.Testing.Harness.UnitTestHarness)">
+            <summary>
+            Initializes a new instance of the UnitTestHarnessEventArgs class.
+            </summary>
+            <param name="harness">The test harness.</param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.UnitTestHarnessEventArgs.UnitTestHarness">
+            <summary>
+            Gets the unit test harness reference.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestAssemblyCompletedEventArgs.#ctor(Microsoft.Silverlight.Testing.UnitTesting.Metadata.IAssembly,Microsoft.Silverlight.Testing.Harness.UnitTestHarness)">
+            <summary>
+            Initializes a new instance of the TestAssemblyCompletedEventArgs
+            type.
+            </summary>
+            <param name="assembly">The assembly metadata.</param>
+            <param name="harness">The test harness instance.</param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.TestAssemblyCompletedEventArgs.Assembly">
+            <summary>
+            Gets the assembly metadata.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.TestAssemblyStartingEventArgs">
+            <summary>
+            Test assembly starting event arguments.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestAssemblyStartingEventArgs.#ctor(Microsoft.Silverlight.Testing.UnitTesting.Metadata.IAssembly,Microsoft.Silverlight.Testing.Harness.UnitTestHarness)">
+            <summary>
+            Initializes a new instance of the TestAssemblyStartingEventArgs
+            type.
+            </summary>
+            <param name="assembly">The assembly metadata.</param>
+            <param name="harness">The unit test harness instance.</param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.TestAssemblyStartingEventArgs.Assembly">
+            <summary>
+            Gets the assembly metadata information.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.TestClassCompletedEventArgs">
+            <summary>
+            The test class completed event arguments.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestClassCompletedEventArgs.#ctor(Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass,Microsoft.Silverlight.Testing.Harness.UnitTestHarness)">
+            <summary>
+            Initializes a new instance of the TestClassCompletedEventArgs
+            class.
+            </summary>
+            <param name="testClass">Test class metadata.</param>
+            <param name="harness">The harness instance.</param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.TestClassCompletedEventArgs.TestClass">
+            <summary>
+            Gets the test class metadata.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.TestClassStartingEventArgs">
+            <summary>
+            Information about the start of a test class event.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestClassStartingEventArgs.#ctor(Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass,Microsoft.Silverlight.Testing.Harness.UnitTestHarness)">
+            <summary>
+            Initializes a new instance of the TestClassStartingEventArgs type.
+            </summary>
+            <param name="testClass">The test class metadata.</param>
+            <param name="harness">The unit test harness reference.</param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.TestClassStartingEventArgs.TestClass">
+            <summary>
+            Gets the test class instance.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.TestMethodStartingEventArgs">
+            <summary>
+            Test method starting event arguments.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestMethodStartingEventArgs.#ctor(Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod,Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass,Microsoft.Silverlight.Testing.Harness.UnitTestHarness)">
+            <summary>
+            Initializes a new instance of the TestMethodStartingEventArgs type.
+            </summary>
+            <param name="testMethod">The test method metadata.</param>
+            <param name="testClass">The test class metadata.</param>
+            <param name="harness">The test harness instance.</param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.TestMethodStartingEventArgs.TestMethod">
+            <summary>
+            Gets the test method metadata.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.TestMethodStartingEventArgs.TestClass">
+            <summary>
+            Gets the test class metadata.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.TestRunStartingEventArgs">
+            <summary>
+            Test method completed event arguments, contains the result.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestRunStartingEventArgs.#ctor(Microsoft.Silverlight.Testing.UnitTestSettings,Microsoft.Silverlight.Testing.Harness.TestRunFilter)">
+            <summary>
+            Initializes a new instance of the TestRunStartingEventArgs
+            type.
+            </summary>
+            <param name="settings">The test run filter.</param>
+            <param name="filter">The test run settings object.</param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.TestRunStartingEventArgs.Settings">
+            <summary>
+            Gets the unit test run settings.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.TestRunStartingEventArgs.TestRunFilter">
+            <summary>
+            Gets the test run filter.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.TestRunStartingEventArgs.TestHarnessName">
+            <summary>
+            Gets or sets the test harness name.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.TestRunStartingEventArgs.EnqueuedAssemblies">
+            <summary>
+            Gets or sets the number of valid, enqueued assemblies scheduled.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.TagAttribute">
+            <summary>
+            Tag attribute used to associate individual test cases with tags to
+            easily test related functionality.
+            </summary>
+            <remarks>
+            The infrastructure associated with the TagAttribute is not yet in place.
+            </remarks>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.TagAttribute.ReservedWords">
+            <summary>
+            List of reserved words that cannot be used as tags.
+            </summary>
+            <remarks>
+            This list should be shared with the tag parser implementation when
+            available.
+            </remarks>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.TagAttribute.ReservedCharacters">
+            <summary>
+            List of reserved characters that cannot be used in tags.
+            </summary>
+            <remarks>
+            This list should be shared with the tag parser implementation when
+            available.
+            </remarks>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.TagAttribute.#ctor(System.String)">
+            <summary>
+            Initializes a new instance of the TagAttribute class.
+            </summary>
+            <param name="tag">
+            Tag associated with the test method or class.
+            </param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.TagAttribute.Tag">
+            <summary>
+            Gets the tag associated with the test method or class.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.HarnessExtensions">
+            <summary>
+            Set of extension methods used by the harness.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.HarnessExtensions.AddRange``1(System.Collections.Generic.IList{``0},System.Collections.Generic.IEnumerable{``0})">
+            <summary>
+            An AddRange implementation for the generic IList interface.
+            </summary>
+            <typeparam name="TListType">The list type.</typeparam>
+            <param name="list">The list object.</param>
+            <param name="collection">The collection to copy into the list.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.HarnessExtensions.Replace``1(System.Collections.Generic.IList{``0},System.Collections.Generic.IEnumerable{``0})">
+            <summary>
+            Replace a list's contents with the items in the IEnumerable.
+            </summary>
+            <typeparam name="TListType">The list type.</typeparam>
+            <param name="list">The list object.</param>
+            <param name="sequence">The sequence to copy into the list.</param>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.IProvideDynamicTestMethods">
+            <summary>
+            The IProvideDynamicTestMethods interface is used to provide additional
+            test methods dynamically at runtime.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.IProvideDynamicTestMethods.GetDynamicTestMethods">
+            <summary>
+            Get the dynamic test methods.
+            </summary>
+            <returns>Sequence of dynamic test methods.</returns>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.RetryTestRunFilter">
+            <summary>
+            A type filter for just a specific test.  Allows the re-running of a 
+            single result again in the same process.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.TestRunFilter">
+            <summary>
+            A type to filter down complete sets of classes, tests and methods.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestRunFilter.DefaultTestRunName">
+            <summary>
+            The default unit test run name.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestRunFilter._settings">
+            <summary>
+            Unit test settings.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestRunFilter.#ctor(Microsoft.Silverlight.Testing.UnitTestSettings,Microsoft.Silverlight.Testing.Harness.UnitTestHarness)">
+            <summary>
+            Initializes a new test run filter using an existing settings file.
+            </summary>
+            <param name="settings">A unit test settings instance.</param>
+            <param name="harness">The unit test harness.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestRunFilter.GetTestClasses(Microsoft.Silverlight.Testing.UnitTesting.Metadata.IAssembly,Microsoft.Silverlight.Testing.Harness.TestClassInstanceDictionary)">
+            <summary>
+            Retrieve a set of test classes from a test assembly.
+            </summary>
+            <param name="assembly">The test assembly metadata object.</param>
+            <param name="instances">Test class instance dictionary.</param>
+            <returns>Returns a new list of test class metadata objects.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestRunFilter.SortTestClasses(System.Collections.Generic.IList{Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass})">
+            <summary>
+            Sort the test classes if the settings for alphabetical sorting are 
+            present.
+            </summary>
+            <param name="tests">List of test classes.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestRunFilter.FilterTestClasses(System.Collections.Generic.IList{Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass},Microsoft.Silverlight.Testing.Harness.TestClassInstanceDictionary)">
+            <summary>
+            Filter out tests based on the standard-supported methods.
+            </summary>
+            <param name="classes">List of test classes.</param>
+            <param name="instances">Test class instance dictionary.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestRunFilter.FilterCustomTestClasses(System.Collections.Generic.IList{Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass},Microsoft.Silverlight.Testing.Harness.TestClassInstanceDictionary)">
+            <summary>
+            Perform any custom filtering that the TestRunFilter needs.
+            </summary>
+            <param name="classes">List of test classes.</param>
+            <param name="instances">Test class instance dictionary.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestRunFilter.FilterLegacyTestClasses(System.Collections.Generic.IList{Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass},Microsoft.Silverlight.Testing.Harness.TestClassInstanceDictionary)">
+            <summary>
+            If specific string-contains filters are present.
+            </summary>
+            <param name="classes">List of test classes.</param>
+            <param name="instances">Test class instance dictionary.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestRunFilter.FilterExclusiveTestClasses(System.Collections.Generic.IList{Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass},Microsoft.Silverlight.Testing.Harness.TestClassInstanceDictionary)">
+            <summary>
+            If any exclusive classes are found, filter them.
+            </summary>
+            <param name="classes">List of test classes.</param>
+            <param name="instances">Test class instance dictionary.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestRunFilter.GetTestMethods(Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass,System.Object)">
+            <summary>
+            Retrieves the test methods from a test class metadata object.
+            </summary>
+            <param name="test">The test class metadata object.</param>
+            <param name="instance">The test class instance.</param>
+            <returns>Returns a list of test method metadata objects.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestRunFilter.FilterTestMethods(System.Collections.Generic.IList{Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod})">
+            <summary>
+            Filter the test methods.
+            </summary>
+            <param name="methods">List of test methods.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestRunFilter.FilterCustomTestMethods(System.Collections.Generic.IList{Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod})">
+            <summary>
+            Perform any custom filtering that the TestRunFilter needs.
+            </summary>
+            <param name="methods">List of test methods.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestRunFilter.FilterExclusiveTestMethods(System.Collections.Generic.IList{Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod})">
+            <summary>
+            If any exclusive classes are found, filter them.
+            </summary>
+            <param name="methods">List of test methods.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestRunFilter.SortTestMethods(System.Collections.Generic.IList{Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod})">
+            <summary>
+            Sorts the test methods, if requested.
+            </summary>
+            <param name="methods">List of test methods.</param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.TestRunFilter.TestRunName">
+            <summary>
+            Gets a friendly name for the test run.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.TestRunFilter.UnitTestHarness">
+            <summary>
+            Gets the unit test harness.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.RetryTestRunFilter._test">
+            <summary>
+            The test class.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.RetryTestRunFilter._method">
+            <summary>
+            The test method.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.RetryTestRunFilter.#ctor(Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass,Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod)">
+            <summary>
+            Initializes a new test run filter using an existing settings file.
+            </summary>
+            <param name="test">The test class metadata.</param>
+            <param name="method">The test method metadata.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.RetryTestRunFilter.GetTestClasses(Microsoft.Silverlight.Testing.UnitTesting.Metadata.IAssembly,Microsoft.Silverlight.Testing.Harness.TestClassInstanceDictionary)">
+            <summary>
+            Retrieve a set of test classes from a test assembly.
+            </summary>
+            <param name="assembly">The test assembly metadata object.</param>
+            <param name="instances">Test class instance dictionary.</param>
+            <returns>Returns a new list of test class metadata objects.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.RetryTestRunFilter.GetTestMethods(Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass,System.Object)">
+            <summary>
+            Retrieves the test methods from a test class metadata object.
+            </summary>
+            <param name="test">The test class metadata object.</param>
+            <param name="instance">The test class instance.</param>
+            <returns>Returns a list of test method metadata objects.</returns>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.TagManager">
+            <summary>
+            A helper class that manages tags and associated metadata. Tag
+            expressions are evaluated at the TestClass level.
+            </summary>
+            <summary>
+            A helper class that manages tags and associated metadata. Tag
+            expressions are evaluated at the TestClass level.
+            </summary>
+            <summary>
+            A helper class that manages tags and associated metadata. Tag
+            expressions are evaluated at the TestClass level.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TagManager.PriorityTagPrefix">
+            <summary>
+            The prefix for any tags generated from priority values.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TagManager.TagType">
+            <summary>
+            A reference to the tag attribute type.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TagManager._classTags">
+            <summary>
+            The test tags associated with the class.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TagManager._methodTags">
+            <summary>
+            The test tags associated with methods.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TagManager._tagsToMethods">
+            <summary>
+            The ability to grab the set of methods, given a test class type, 
+            and the tag of interest.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TagManager._testClass">
+            <summary>
+            The test class type.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TagManager.#ctor(System.Type,System.Collections.Generic.IEnumerable{Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod})">
+            <summary>
+            Initializes a new tag manager.
+            </summary>
+            <param name="test">The test class type.</param>
+            <param name="methods">The set of methods to run.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TagManager.CreateClassTags(System.Type)">
+            <summary>
+            Reflect, read and prepare the tags for the class metadata. Performs 
+            the work if this is the first time the metadata has been seen.
+            </summary>
+            <param name="test">The reflection object for the test class.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TagManager.CreateMethodTags(Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod)">
+            <summary>
+            Reflect, read and prepare the tags for the method metadata. Performs 
+            the work if this is the first time the metadata has been seen.
+            </summary>
+            <param name="method">The method metadata.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TagManager.EvaluateExpression(System.String)">
+            <summary>
+            Get the test methods that correspond to a tag expression.
+            </summary>
+            <param name="tagExpression">Tag expression.</param>
+            <returns>Test methods for the tag expression.</returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.TagManager.Universe">
+            <summary>
+            Gets or sets the universe of all test methods for expression 
+            evaluation.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.TagManager.ExpressionEvaluator">
+            <summary>
+            Evaluate tag expressions.
+            </summary>
+            <remarks>
+            Tag expressions are derived from the following EBNF grammar:
+                {Expression} :=
+                    {Expression} + {Term} |
+                    {Expression} - {Term} |
+                    {Term}
+                {Term} :=
+                    {Term} * {Factor} |
+                    {Factor}
+                {Factor} :=
+                    !{Factor} |
+                    ({Expression}) |
+                    {Tag}
+                {Tag} :=
+                    All |
+                    [^InvalidCharacters]+
+             
+            The non-terminals for {Expression} and {Term} will be left factored
+            in the recursive descent parser below.
+            </remarks>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TagManager.ExpressionEvaluator.Union">
+            <summary>
+            Union character.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TagManager.ExpressionEvaluator.Intersection">
+            <summary>
+            Intersection character.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TagManager.ExpressionEvaluator.Complement">
+            <summary>
+            Complement character.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TagManager.ExpressionEvaluator.Difference">
+            <summary>
+            Difference character.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TagManager.ExpressionEvaluator.All">
+            <summary>
+            The "All" string constant.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TagManager.ExpressionEvaluator.InvalidCharacters">
+            <summary>
+            Invalid characters in a tag name.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TagManager.ExpressionEvaluator.Evaluate(Microsoft.Silverlight.Testing.Harness.TagManager,System.String)">
+            <summary>
+            Evaluate a tag expression.
+            </summary>
+            <param name="owner">The owner object.</param>
+            <param name="tagExpression">Tag expression.</param>
+            <returns>Test methods associated with the tag expression.</returns>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TagManager.ExpressionEvaluator._owner">
+            <summary>
+            The owning TagManager instance.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TagManager.ExpressionEvaluator._tagExpression">
+            <summary>
+            Expression being evaluated.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TagManager.ExpressionEvaluator._position">
+            <summary>
+            Current position in the expression.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TagManager.ExpressionEvaluator.#ctor(Microsoft.Silverlight.Testing.Harness.TagManager,System.String)">
+            <summary>
+            Create an expression evaluator.
+            </summary>
+            <param name="owner">The owner object.</param>
+            <param name="tagExpression">Expression object.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TagManager.ExpressionEvaluator.Match(System.String)">
+            <summary>
+            Match a sequence of characters.
+            </summary>
+            <param name="expected">String to match.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TagManager.ExpressionEvaluator.TryMatch(System.String)">
+            <summary>
+            Try to match a sequence of characters.
+            </summary>
+            <param name="expected">String to match.</param>
+            <returns>Returns a value indicating whether the match was 
+            successful.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TagManager.ExpressionEvaluator.Evaluate">
+            <summary>
+            Evaluate an expression.
+            </summary>
+            <returns>Test methods described by the expression.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TagManager.ExpressionEvaluator.ReadExpression">
+            <summary>
+            Evaluate an expression.
+            </summary>
+            <returns>Test methods described by the expression.</returns>
+            <remarks>
+            We need to factor out left recursion, so:
+                {Expression} :=
+                    {Expression} + {Term} |
+                    {Expression} - {Term} |
+                    {Term}
+            becomes:
+                {Expression} :=
+                	{Term}{Expression'}
+                
+                {Expression'} :=
+                	#empty#
+                	+ {Term}{Expression'}
+                	- {Term}{Expression'}
+            </remarks>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TagManager.ExpressionEvaluator.ReadExpression(System.Collections.Generic.IEnumerable{Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod})">
+            <summary>
+            Evaluate an expression.
+            </summary>
+            <param name="term">
+            Left term already read as part of the expression.
+            </param>
+            <returns>Test methods described by the expression.</returns>
+            <remarks>
+            Non-terminal created for left-factoring:
+                {Expression'} :=
+                	#empty#
+                	+ {Term}{Expression'}
+                	- {Term}{Expression'}
+            </remarks>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TagManager.ExpressionEvaluator.ReadTerm">
+            <summary>
+            Evaluate a term.
+            </summary>
+            <returns>Test methods described by the expression.</returns>
+            <remarks>
+            We need to factor out left recursion, so:
+                {Term} :=
+                    {Factor} * {Term} |
+                    {Factor}
+            becomes:
+                {Term} :=
+                    {Factor}{Term'}
+            
+                {Term'} :=
+                	#empty#
+                	^ {Factor}{Term'}
+            </remarks>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TagManager.ExpressionEvaluator.ReadTerm(System.Collections.Generic.IEnumerable{Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod})">
+            <summary>
+            Evaluate a term.
+            </summary>
+            <param name="factor">
+            Left term already read as part of the expression.
+            </param>
+            <returns>Test methods described by the expression.</returns>
+            <remarks>
+            Non-terminal created for left-factoring:
+                {Term'} :=
+                	#empty#
+                	^ {Factor}{Term'}
+            </remarks>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TagManager.ExpressionEvaluator.ReadFactor">
+            <summary>
+            Evaluate a factor.
+            </summary>
+            <returns>Test methods described by the expression.</returns>
+            <remarks>
+            {Factor} :=
+                !{Factor} |
+                ({Expression}) |
+                {Tag}
+            </remarks>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TagManager.ExpressionEvaluator.CreateEmptyList">
+            <summary>
+            Creates a new empty collection.
+            </summary>
+            <returns>Returns an empty collection.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TagManager.ExpressionEvaluator.ReadTag">
+            <summary>
+            Evaluate a tag.
+            </summary>
+            <returns>Test methods described by the expression.</returns>
+            <remarks>
+            {Tag} :=
+                All |
+                [^InvalidCharacters]+
+            </remarks>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.TagManager.Tags">
+            <summary>
+            A string list for storing tags. Provides an Add method that takes 
+            an attribute object and, if a TagAttribute, will append its tag 
+            value to the list.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TagManager.Tags.#ctor">
+            <summary>
+            Initializes a new Tags instance.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TagManager.Tags.#ctor(System.Collections.Generic.IEnumerable{System.String})">
+            <summary>
+            Initializes a new Tags instance from an existing collection.
+            </summary>
+            <param name="collection">The collection to copy.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TagManager.Tags.Add(System.Attribute)">
+            <summary>
+            Adds a TagAttribute's tag value.
+            </summary>
+            <param name="tag">The tag object.</param>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.TagTestRunFilter">
+            <summary>
+            A method and class filter that uses expressions and the TagAttribute.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TagTestRunFilter.NullTagRunName">
+            <summary>
+            The name to use for the test run when the tag expression is null.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TagTestRunFilter.#ctor(Microsoft.Silverlight.Testing.UnitTestSettings,Microsoft.Silverlight.Testing.Harness.UnitTestHarness)">
+            <summary>
+            Initializes a new test run filter with the tag expression setting.
+            </summary>
+            <param name="settings">Unit test settings.</param>
+            <param name="harness">Unit test harness.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TagTestRunFilter.#ctor(Microsoft.Silverlight.Testing.UnitTestSettings,Microsoft.Silverlight.Testing.Harness.UnitTestHarness,System.String)">
+            <summary>
+            Initializes a new test run filter with the tag expression.
+            </summary>
+            <param name="settings">Unit test settings.</param>
+            <param name="harness">Unit test harness.</param>
+            <param name="tagExpression">The tag expression to use.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TagTestRunFilter.SetTagExpression(System.String)">
+            <summary>
+            Sets the tag expression property.
+            </summary>
+            <param name="tagExpression">The tag expression to use.</param>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TagTestRunFilter._hasLoggedWarning">
+            <summary>
+            A value indicating whether the warning has been logged yet.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TagTestRunFilter.FilterCustomTestClasses(System.Collections.Generic.IList{Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass},Microsoft.Silverlight.Testing.Harness.TestClassInstanceDictionary)">
+            <summary>
+            Apply tag filtering.
+            </summary>
+            <param name="classes">List of test classes.</param>
+            <param name="instances">Test class instance dictionary.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TagTestRunFilter.FilterCustomTestMethods(System.Collections.Generic.IList{Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod})">
+            <summary>
+            Apply tag filtering.
+            </summary>
+            <param name="methods">List of test methods.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TagTestRunFilter.ApplyExpression(Microsoft.Silverlight.Testing.Harness.TagManager,System.Collections.Generic.ICollection{Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod})">
+            <summary>
+            Apply the tag filtering.
+            </summary>
+            <param name="tagManager">The tag manager instance.</param>
+            <param name="methods">Set of methods.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TagTestRunFilter.FilterExclusiveTestClasses(System.Collections.Generic.IList{Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass},Microsoft.Silverlight.Testing.Harness.TestClassInstanceDictionary)">
+            <summary>
+            Exclusive attributes are not supported when also using tagging.
+            </summary>
+            <param name="classes">List of test classes.</param>
+            <param name="instances">Test class instance dictionary.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TagTestRunFilter.FilterExclusiveTestMethods(System.Collections.Generic.IList{Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod})">
+            <summary>
+            Exclusive attributes are not supported when also using tagging.
+            </summary>
+            <param name="methods">List of test methods.</param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.TagTestRunFilter.TagExpression">
+            <summary>
+            Gets the tag expression in use by the run filter.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.TestAssemblyHelper">
+            <summary>
+            Helper code for TestAssembly logic.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestAssemblyHelper.HasExclusiveClasses(System.Collections.Generic.IList{Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass})">
+            <summary>
+            Check whether [Exclusive] attribute is present on any classes.
+            </summary>
+            <param name="classes">Collection of class metadata objects.</param>
+            <returns>Returns a value indicating whether any of the classes 
+            include an [Exclusive] attribute.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestAssemblyHelper.SortTestClasses(System.Collections.Generic.IList{Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass})">
+            <summary>
+            Sorts the test classes alphabetically by name.
+            </summary>
+            <param name="classes">A list of test class metadata objects.</param>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.TestClassHelper">
+            <summary>
+            Test class helper.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestClassHelper._hasWarned">
+            <summary>
+            A value indicating whether the warning has been logged in this run.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestClassHelper.FilterTestsToRun(System.Collections.Generic.IList{Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass},System.Collections.Generic.ICollection{System.String})">
+            <summary>
+            Filter the set of test classes by removing unused classes.
+            </summary>
+            <param name="classes">The input list of test class metadata objects.</param>
+            <param name="classesToRun">The classes to run.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestClassHelper.FilterExclusiveClasses(System.Collections.Generic.IList{Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass},Microsoft.Silverlight.Testing.Harness.LogMessageWriter)">
+            <summary>
+            Look through the classes for the [Exclusive] attribute. If found, 
+            remove any classes where the attribute is not present.
+            </summary>
+            <param name="classes">The input list of classes.</param>
+            <param name="logWriter">The log writer object.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestClassHelper.FilterByFilterClassParameter(System.Collections.Generic.IDictionary{System.String,System.String},System.Collections.Generic.IList{Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass})">
+            <summary>
+            Look for the /p:FilterClass parameter in the test harness settings. 
+            Try to do a substring match on all filtered test classes.
+            </summary>
+            <param name="parameters">The parameters.</param>
+            <param name="classes">List of test classes to be filtered.</param>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.TestMethodCompletedEventArgs">
+            <summary>
+            Test method completed event arguments, contains the result.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestMethodCompletedEventArgs.#ctor(Microsoft.Silverlight.Testing.Harness.ScenarioResult)">
+            <summary>
+            Initializes a new instance of the TestMethodCompletedEventArgs
+            type.
+            </summary>
+            <param name="result">The result instance.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestMethodCompletedEventArgs.#ctor(Microsoft.Silverlight.Testing.Harness.ScenarioResult,Microsoft.Silverlight.Testing.Harness.UnitTestHarness)">
+            <summary>
+            Initializes a new instance of the TestMethodCompletedEventArgs
+            type.
+            </summary>
+            <param name="result">The result instance.</param>
+            <param name="harness">The unit test harness.</param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.TestMethodCompletedEventArgs.Result">
+            <summary>
+            Gets the test method result.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.TestMethodHelper">
+            <summary>
+            Helper code for TestMethod logic.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestMethodHelper._hasWarned">
+            <summary>
+            A value indicating whether the warning has been logged in this run.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestMethodHelper.HasExclusiveMethods(System.Collections.Generic.ICollection{Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod})">
+            <summary>
+            Check whether [Exclusive] is present on >= 1 of the methods.
+            </summary>
+            <param name="methods">The methods to search through.</param>
+            <returns>True if at least one of the methods has Exclusive.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestMethodHelper.FilterExclusiveMethods(System.Collections.Generic.IList{Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod},Microsoft.Silverlight.Testing.Harness.LogMessageWriter)">
+            <summary>
+            Look through the methods for the [Exclusive] attribute. If found, 
+            remove any methods where the attribute is not present.
+            </summary>
+            <param name="methods">The methods to filter.</param>
+            <param name="logWriter">The log writer object.</param>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.UnitTestHarnessEvents">
+            <summary>
+            A helper utility for firing events as the unit test harness from any
+            component, internal or not. Enables expansion.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.UnitTestHarnessEvents._harness">
+            <summary>
+            Stored instance of the harness.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarnessEvents.#ctor(Microsoft.Silverlight.Testing.Harness.UnitTestHarness)">
+            <summary>
+            Initializes a new intance of the UnitTestHarnessEvents helper.
+            </summary>
+            <param name="harness">The harness reference.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarnessEvents.SendTestAssemblyStarting(Microsoft.Silverlight.Testing.Harness.TestAssemblyStartingEventArgs)">
+            <summary>
+            Calls the test assembly starting event.
+            </summary>
+            <param name="e">The event data.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarnessEvents.SendTestAssemblyCompleted(Microsoft.Silverlight.Testing.Harness.TestAssemblyCompletedEventArgs)">
+            <summary>
+            Calls the test assembly completed event.
+            </summary>
+            <param name="e">The event data.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarnessEvents.SendTestClassStarting(Microsoft.Silverlight.Testing.Harness.TestClassStartingEventArgs)">
+            <summary>
+            Calls the test class starting event handlers.
+            </summary>
+            <param name="e">The event data.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarnessEvents.SendTestClassCompleted(Microsoft.Silverlight.Testing.Harness.TestClassCompletedEventArgs)">
+            <summary>
+            Calls the test class completed event.
+            </summary>
+            <param name="e">The event data.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarnessEvents.SendTestMethodStarting(Microsoft.Silverlight.Testing.Harness.TestMethodStartingEventArgs)">
+            <summary>
+            Calls the test method starting event.
+            </summary>
+            <param name="e">The event data.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarnessEvents.SendTestMethodCompleted(Microsoft.Silverlight.Testing.Harness.TestMethodCompletedEventArgs)">
+            <summary>
+            Calls the test method completed event.
+            </summary>
+            <param name="e">The event data.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarnessEvents.SendTestRunStarting(Microsoft.Silverlight.Testing.Harness.TestRunStartingEventArgs)">
+            <summary>
+            Calls the test run starting event.
+            </summary>
+            <param name="e">The event data.</param>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.UnitTestLogicFactory">
+            <summary>
+            A factory for creating the unit test objects.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.UnitTestLogicFactory._harness">
+            <summary>
+            The unit test harness.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestLogicFactory.#ctor(Microsoft.Silverlight.Testing.Harness.UnitTestHarness)">
+            <summary>
+            Initializes a new unit test logic factory.
+            </summary>
+            <param name="harness">The unit test harness reference.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestLogicFactory.CreateAssemblyManager(Microsoft.Silverlight.Testing.UnitTesting.Metadata.IUnitTestProvider,Microsoft.Silverlight.Testing.Harness.TestRunFilter,Microsoft.Silverlight.Testing.UnitTesting.Metadata.IAssembly)">
+            <summary>
+            Creates a new AssemblyManager.
+            </summary>
+            <param name="provider">The unit test provider.</param>
+            <param name="filter">The run filter.</param>
+            <param name="assembly">The unit test assembly metadata object.</param>
+            <returns>Returns a new AssemblyManager.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestLogicFactory.CreateTestClassManager(Microsoft.Silverlight.Testing.UnitTesting.Metadata.IUnitTestProvider,Microsoft.Silverlight.Testing.Harness.TestRunFilter,Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass,System.Object)">
+            <summary>
+            Creates a new TestClassManager.
+            </summary>
+            <param name="provider">The unit test provider.</param>
+            <param name="filter">The run filter.</param>
+            <param name="testClass">The test class metadata.</param>
+            <param name="instance">The test class instance.</param>
+            <returns>Returns a new TestClassManager.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestLogicFactory.CreateTestMethodManager(Microsoft.Silverlight.Testing.UnitTesting.Metadata.IUnitTestProvider,Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass,Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod,System.Object)">
+            <summary>
+            Creates a new TestMethodManager.
+            </summary>
+            <param name="provider">The unit test provider.</param>
+            <param name="testClass">The test class metadata.</param>
+            <param name="method">The test method metadata.</param>
+            <param name="instance">The test class instance.</param>
+            <returns>Returns a new TestMethodManager.</returns>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider">
+            <summary>
+            A log provider that outputs in a simple custom test format that Visual 
+            Studio recognizes.
+            </summary>
+            <summary>
+            A log provider that outputs in a simple custom test format that Visual 
+            Studio recognizes.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.LogProvider">
+            <summary>
+            LogProvider interface with a single Process method that handles a
+            LogMessage object.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.LogProvider._conditionalHandlers">
+            <summary>
+            A dictionary of conditional action handlers.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.LogProvider._definedHandlers">
+            <summary>
+            A dictionary of types/actions for handling specific types of log
+            messages.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogProvider.Process(Microsoft.Silverlight.Testing.Harness.LogMessage)">
+            <summary>
+            Perform any needed operations to log the message.
+            </summary>
+            <param name="logMessage">Instance of LogMessage type.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogProvider.ProcessRemainder(Microsoft.Silverlight.Testing.Harness.LogMessage)">
+            <summary>
+            Method that processes any messages not handled any other way.
+            </summary>
+            <param name="message">The log message.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogProvider.RegisterMessageTypeHandler(Microsoft.Silverlight.Testing.Harness.LogMessageType,System.Action{Microsoft.Silverlight.Testing.Harness.LogMessage})">
+            <summary>
+            Registers an action for a specific message type.
+            </summary>
+            <param name="type">The type of interest.</param>
+            <param name="action">The handler for the type.  Takes a LogMessage 
+            parameter.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogProvider.RegisterConditionalHandler(System.Func{Microsoft.Silverlight.Testing.Harness.LogMessage,System.Boolean},System.Action{Microsoft.Silverlight.Testing.Harness.LogMessage})">
+            <summary>
+            Registers a conditional handler.  During the log message processing 
+            step, all conditional callbacks will be tried.  The first positive 
+            result will then call the associated processing Action for that 
+            conditional method entry.
+            </summary>
+            <param name="condition">A conditional callback that takes a 
+            LogMessage input parameter.</param>
+            <param name="action">A log message processing Action that is called 
+            when the condition is true.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogProvider.UnregisterConditionalHandler(System.Func{Microsoft.Silverlight.Testing.Harness.LogMessage,System.Boolean})">
+            <summary>
+            Removes a conditional callback.
+            </summary>
+            <param name="condition">The condition.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogProvider.ClearConditionalHandlers">
+            <summary>
+            Clear all existing conditional handlers.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogProvider.ClearMessageTypeHandlers">
+            <summary>
+            Clear all existing message type handlers.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.ITestSettingsLogProvider">
+            <summary>
+            Interface for LogProviders that want access to external test settings.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.ITestSettingsLogProvider.Initialize(Microsoft.Silverlight.Testing.UnitTestSettings)">
+            <summary>
+            Initializes the provider.
+            </summary>
+            <param name="settings">The settings.</param>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.DefaultTestResultsFilename">
+            <summary>
+            The filename to use for saving test results.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.DefaultTestAdapterTypeName">
+            <summary>
+            The default test adapter type name.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.DefaultTestListName">
+            <summary>
+            The default test list name.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.DefaultComputerName">
+            <summary>
+            The default computer name.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.DefaultUserName">
+            <summary>
+            The default user name.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.DefaultTestRunConfigurationName">
+            <summary>
+            The default configuration name.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.DefaultTestRunConfigurationDescription">
+            <summary>
+            The default configuration description.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider._writer">
+            <summary>
+            The Visual Studio log format writer.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.#ctor">
+            <summary>
+            Initializes a new instance of the VisualStudioLogProvider class.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.RegisterLogHandlers">
+            <summary>
+            Register the handler conditions of interest to this log provider.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.TestAssemblyStart(Microsoft.Silverlight.Testing.Harness.LogMessage)">
+            <summary>
+            Assembly start code.
+            </summary>
+            <param name="l">The log message.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.ProcessIncorrectException(Microsoft.Silverlight.Testing.Harness.LogMessage)">
+            <summary>
+            Process an Exception that was not the expected Exception type.
+            </summary>
+            <param name="l">The log message.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.ProcessException(Microsoft.Silverlight.Testing.Harness.LogMessage)">
+            <summary>
+            Process an Exception that is logged or stored.
+            </summary>
+            <param name="l">The log message object.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.SetTestRunConfiguration(Microsoft.Silverlight.Testing.UnitTesting.Metadata.IAssembly)">
+            <summary>
+            Sets the test run configuration information when the test assembly 
+            begins processing.
+            </summary>
+            <param name="assembly">The test assembly metadata object.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.GenerateTestRunName(Microsoft.Silverlight.Testing.UnitTesting.Metadata.IAssembly)">
+            <summary>
+            Generate a name for the test run that will be used when 
+            displaying the result in Visual Studio.
+            </summary>
+            <param name="assembly">The test assembly metadata object.</param>
+            <returns>Returns the test run name.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.NewGuid">
+            <summary>
+            Generates a new Guid string value.
+            </summary>
+            <returns>Returns a new Guid string value.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.ProcessResult(Microsoft.Silverlight.Testing.Harness.LogMessage)">
+            <summary>
+            Process a UTF result message.
+            </summary>
+            <param name="logMessage">The log message object.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.ProcessBug(Microsoft.Silverlight.Testing.Harness.LogMessage)">
+            <summary>
+            Process [Bug(...)].
+            </summary>
+            <param name="l">A KnownBugLogMessage object.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.TestRunFilterSelected(Microsoft.Silverlight.Testing.Harness.LogMessage)">
+            <summary>
+            The run filter has been selected.
+            </summary>
+            <param name="logMessage">The log message object.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.WriteLogFile(Microsoft.Silverlight.Testing.Harness.UnitTestHarness)">
+            <summary>
+            Saves the log file data.
+            </summary>
+            <param name="harness">The unit test harness.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Initialize(Microsoft.Silverlight.Testing.UnitTestSettings)">
+            <summary>
+            Initializes the test harness.
+            </summary>
+            <param name="settings">The test harness settings.</param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.TestResultsFileName">
+            <summary>
+            Gets or sets the test results filename.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.TestAdapterTypeName">
+            <summary>
+            Gets or sets the test adapter type name reported in the Visual 
+            Studio results log file.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.TestRunId">
+            <summary>
+            Gets or sets the TestRunId.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.TestListName">
+            <summary>
+            Gets or sets the test list name.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.ComputerName">
+            <summary>
+            Gets or sets the computer name that is reported in the results
+            log file.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.UserName">
+            <summary>
+            Gets or sets the user name that is reported in the results file.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.TestRunConfigurationName">
+            <summary>
+            Gets or sets the TestRunConfigurationName.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.TestRunConfigurationDescription">
+            <summary>
+            Gets or sets the TestRunConfigurationDescription.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.TestRunNamePrefix">
+            <summary>
+            Gets or sets a prefix for use in the test run name.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.TestRunConfigurationId">
+            <summary>
+            Gets or sets the TestRunConfigurationId.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.CurrentAssemblyName">
+            <summary>
+            Gets the current assembly name.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer">
+            <summary>
+            A log provider that outputs in a simple custom test format that 
+            Visual Studio recognizes. This is a simple, subset writer.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.DateTimeFormat">
+            <summary>
+            Date time format string representing round-trip date/time 
+            pattern.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.DefaultTestTypeId">
+            <summary>
+            A unique ID representing the Visual Studio unit test type ID.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.ResultsXmlNamespace">
+            <summary>
+            The namespace for Visual Studio team test results.
+            </summary>
+            <remarks>Was of XNamespace type in XLinq implementation.</remarks>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer._testLists">
+            <summary>
+            A dictionary containing test list names and guids.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer._pendingElements">
+            <summary>
+            Stores temporary, pending elements for the next result.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.#ctor">
+            <summary>
+            Initializes a new Writer object.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.FinalizeContent">
+            <summary>
+            Stores property values in the respective elements, clears any 
+            lookup dictionaries.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.ToDateString(System.DateTime)">
+            <summary>
+            Returns a string value of the DateTime object.
+            </summary>
+            <param name="dateTime">The DateTime object.</param>
+            <returns>Returns the formatted string.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.GetXmlAsString">
+            <summary>
+            Returns the XML log file as a string.
+            </summary>
+            <returns>The XML value.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.CreateInitialDocument">
+            <summary>
+            Creates the initial results document and its XElements.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.CreateElement(System.String)">
+            <summary>
+            Creates a new XElement within the results XML namespace.
+            </summary>
+            <param name="name">The element name.</param>
+            <returns>Returns a new named element.</returns>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer._total">
+            <summary>
+            The total number of scenarios.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer._outcomes">
+            <summary>
+            The set of outcomes and counts.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.IncrementResults(Microsoft.Silverlight.Testing.Harness.TestOutcome)">
+            <summary>
+            Increment the number of passing results.
+            </summary>
+            <param name="outcome">The test outcome.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.AddTestMethodResult(Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod,System.String,System.String,System.String,System.String,System.String,System.String,System.DateTime,System.DateTime,Microsoft.Silverlight.Testing.Harness.TestOutcome)">
+            <summary>
+            Adds the result of a test method into the log.
+            </summary>
+            <param name="test">The test metadata.</param>
+            <param name="storage">The storage value.</param>
+            <param name="codeBase">The code base value.</param>
+            <param name="adapterTypeName">The adapter type name.</param>
+            <param name="className">The class name.</param>
+            <param name="testListName">The test list name.</param>
+            <param name="computerName">The computer name.</param>
+            <param name="startTime">The start time.</param>
+            <param name="endTime">The end time.</param>
+            <param name="outcome">The outcome.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.AddPendingWriteLine(System.String)">
+            <summary>
+            Adds a WriteLine to the next result to be processed.
+            </summary>
+            <param name="line">The text to output.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.AddPendingErrorMessage(System.String)">
+            <summary>
+            Adds an error message to the next result to be processed.
+            </summary>
+            <param name="message">The message.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.AddPendingException(System.Exception)">
+            <summary>
+            Adds an Exception to the next result to be processed.
+            </summary>
+            <param name="e">The Exception object.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.AddPendingOutput(Microsoft.Silverlight.Testing.Service.SimpleXElement)">
+            <summary>
+            Adds pending output for the next result.
+            </summary>
+            <param name="element">The element to wrap in an Output element.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.GetTestListGuid(System.String)">
+            <summary>
+            Returns the GUID for a test list name. The result is stored 
+            in memory.
+            </summary>
+            <param name="testListName">The test list name.</param>
+            <returns>Returns the test list name guid.</returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.Started">
+            <summary>
+            Gets or sets the time that the test run started.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.Created">
+            <summary>
+            Gets or sets the time that the writer object and/or test run was created.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.Finished">
+            <summary>
+            Gets or sets the time that the test run was finished.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.TestRun">
+            <summary>
+            Gets the root XML node for the test run and its results.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.UnitTestTestTypeId">
+            <summary>
+            Gets or sets the test type ID used for new results.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.TestRunConfiguration">
+            <summary>
+            Gets the TestRunConfiguration element.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.Counters">
+            <summary>
+            Gets the Counters element.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.TestDefinitions">
+            <summary>
+            Gets the TestDefinitions element.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.TestLists">
+            <summary>
+            Gets the TestLists element.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.TestEntries">
+            <summary>
+            Gets the TestEntries element.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.Times">
+            <summary>
+            Gets the Times element.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.ResultSummary">
+            <summary>
+            Gets the ResultSummary element.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.Results">
+            <summary>
+            Gets the Results element.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.TestRunId">
+            <summary>
+            Sets the TestRunId.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.TestRunName">
+            <summary>
+            Sets the TestRunName.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.TestRunUser">
+            <summary>
+            Sets the TestRunUser.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.TestRunConfigurationName">
+            <summary>
+            Sets the TestRunConfigurationName.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.TestRunConfigurationId">
+            <summary>
+            Sets the TestRunConfigurationId.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.RunOutcome">
+            <summary>
+            Sets the overall run outcome value.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.VisualStudioLogProvider.Writer.TestRunConfigurationDescription">
+            <summary>
+            Sets the TestRunConfigurationDescription.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.ClassicTestPage">
+            <summary>
+            A user control that should be used as the root visual for a Silverlight 
+            plugin if developers would like to use the advanced TestSurface 
+            functionality within Microsoft.Silverlight.Testing.
+            
+            The TestSurface is automatically cleared after each test scenario 
+            completes, eliminating the need for many additional cleanup methods.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.ClassicTestPage.#ctor">
+            <summary>
+            Initializes the TestPage object.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.ClassicTestPage.InitializeComponent">
+            <summary>
+            InitializeComponent
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.ClassicTestPage.TestPanel">
+            <summary>
+            Gets the test surface, a dynamic Panel that removes its children 
+            elements after each test completes.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.TextFailuresLogProvider">
+            <summary>
+            A log provider that outputs failures as a string.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TextFailuresLogProvider._failures">
+            <summary>
+            A list of failing results.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TextFailuresLogProvider.#ctor">
+            <summary>
+            Initializes a new TextFailuresLogProvider instance.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TextFailuresLogProvider.GetFailuresLog">
+            <summary>
+            Retrieve the text log of all failures in the unit test run.
+            </summary>
+            <returns>Returns the log contents.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TextFailuresLogProvider.RegisterLogHandlers">
+            <summary>
+            Register the handler conditions of interest to this log provider.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TextFailuresLogProvider.ProcessResult(Microsoft.Silverlight.Testing.Harness.LogMessage)">
+            <summary>
+            Process a UTF result message.
+            </summary>
+            <param name="logMessage">The log message object.</param>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.TestPage">
+            <summary>
+            A user control that should be used as the root visual for a Silverlight 
+            plugin if developers would like to use the advanced TestSurface 
+            functionality within Microsoft.Silverlight.Testing. The TestSurface is 
+            automatically cleared after each test scenario completes, eliminating 
+            the need for many additional cleanup methods.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestPage._harness">
+            <summary>
+            Backing field for the unit test harness instance.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestPage._model">
+            <summary>
+            Backing field for the model manager.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestPage._startupTimer">
+            <summary>
+            Backing field for the startup timer.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.TestPage._clipboardFeatureSupported">
+            <summary>
+            Backing field for a value indicating whether the clipboard feature
+            is supported.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TestPage.#ctor">
+            <summary>
+            Initializes the TestPage object.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TestPage.#ctor(Microsoft.Silverlight.Testing.Harness.UnitTestHarness)">
+            <summary>
+            Initializes the TestPage object.
+            </summary>
+            <param name="harness">The test harness instance.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TestPage.StartupMonitor(System.Object,System.EventArgs)">
+            <summary>
+            Waits for the Settings to become available, either by the service or
+            system setting the instance property.
+            </summary>
+            <param name="sender">The source timer.</param>
+            <param name="e">The event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TestPage.StartTestRun">
+            <summary>
+            Starts the test run.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TestPage.OnTestAssemblyStarting(System.Object,Microsoft.Silverlight.Testing.Harness.TestAssemblyStartingEventArgs)">
+            <summary>
+            Handles the test assembly starting event to expand the test stage
+            height.
+            </summary>
+            <param name="sender">The source object.</param>
+            <param name="e">The event data.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TestPage.OnTestHarnessCompleted(System.Object,Microsoft.Silverlight.Testing.Harness.TestHarnessCompletedEventArgs)">
+            <summary>
+            Handles the test harness complete event, to display results.
+            </summary>
+            <param name="sender">The source object.</param>
+            <param name="e">The event data.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TestPage.OnTestStageExpanderClick(System.Object,System.EventArgs)">
+            <summary>
+            Handles the click on the test stage.
+            </summary>
+            <param name="sender">The source object.</param>
+            <param name="e">The event data.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TestPage.ExpandCollapseTestStage(System.Boolean)">
+            <summary>
+            Expand and collapse the test stage.
+            </summary>
+            <param name="expand">A value indicating whether to expand the stage.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TestPage.OnTestMethodCompleted(System.Object,Microsoft.Silverlight.Testing.Harness.TestMethodCompletedEventArgs)">
+            <summary>
+            Handles the completion of a test method.
+            </summary>
+            <param name="sender">The source object.</param>
+            <param name="e">The event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TestPage.OnTagExpressionSelected(System.Object,Microsoft.Silverlight.Testing.Client.TagExpressionEventArgs)">
+            <summary>
+            Handles the completion event on the tag expression editor to begin
+            the test run using the user-provided settings.
+            </summary>
+            <param name="sender">The source object.</param>
+            <param name="e">The event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TestPage.OnResultNavigationClick(System.Object,System.Windows.RoutedEventArgs)">
+            <summary>
+            Handles navigation back or forward.
+            </summary>
+            <param name="sender">The source object.</param>
+            <param name="e">The event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TestPage.OnInstallClick(System.Object,System.EventArgs)">
+            <summary>
+            Installs the application.
+            </summary>
+            <param name="sender">The source object.</param>
+            <param name="e">The event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TestPage.OnClipboardButtonClick(System.Object,System.EventArgs)">
+            <summary>
+            Offers clipboard interface support for copying test run results.
+            </summary>
+            <param name="sender">The source object.</param>
+            <param name="e">The event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TestPage.OnPlayPauseClick(System.Object,System.Windows.RoutedEventArgs)">
+            <summary>
+            Handles the click on a play/pause button for the run dispatcher.
+            </summary>
+            <param name="sender">The source object.</param>
+            <param name="e">The event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TestPage.SetClipboardText(System.String)">
+            <summary>
+            Copies text into the clipboard. If the Silverlight runtime on the
+            system does not support the clipboard API, then it reverts to a
+            large text box that allows the user to manually copy and paste.
+            </summary>
+            <param name="text">The text to set.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.TestPage.InitializeComponent">
+            <summary>
+            InitializeComponent
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestPage.TestPanel">
+            <summary>
+            Gets the test surface, a dynamic Panel that removes its children 
+            elements after each test completes.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestPage.UnitTestHarness">
+            <summary>
+            Gets the unit test harness instance.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.TestPage.TreeView">
+            <summary>
+            Gets the tree view instance.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Properties.UnitTestMessage">
+            <summary>
+              A strongly-typed resource class, for looking up localized strings, etc.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Properties.UnitTestMessage.ResourceManager">
+            <summary>
+              Returns the cached ResourceManager instance used by this class.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Properties.UnitTestMessage.Culture">
+            <summary>
+              Overrides the current thread's CurrentUICulture property for all
+              resource lookups using this strongly typed resource class.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Properties.UnitTestMessage.CompositeWorkItem_Invoke_NoRemainingWorkItems">
+            <summary>
+              Looks up a localized string similar to There are no remaining test work items.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Properties.UnitTestMessage.LogException">
+            <summary>
+              Looks up a localized string similar to Exception: Type &quot;{0}&quot; Message &quot;{1}&quot;.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Properties.UnitTestMessage.LogIgnore">
+            <summary>
+              Looks up a localized string similar to Ignoring &quot;{0}&quot;.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Properties.UnitTestMessage.LogIncorrectExceptionType">
+            <summary>
+              Looks up a localized string similar to Incorrect exception type &quot;{0}&quot; received. Was expecting a &quot;{1}&quot; type..
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Properties.UnitTestMessage.LogNoException">
+            <summary>
+              Looks up a localized string similar to No Exception was observed. Was expecting a &quot;{0}&quot; type exception..
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Properties.UnitTestMessage.TagAttribute_ctor_EmptyTag">
+            <summary>
+              Looks up a localized string similar to Tag cannot be empty!.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Properties.UnitTestMessage.TagAttribute_ctor_ReservedCharacter">
+            <summary>
+              Looks up a localized string similar to The tag &quot;{0}&quot; contains the invalid character &quot;{1}&quot;!.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Properties.UnitTestMessage.TagAttribute_ctor_ReservedTag">
+            <summary>
+              Looks up a localized string similar to Tag &quot;{0}&quot; is reserved!.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Properties.UnitTestMessage.TagManager_ExpressionEvaluator_EmptyTagExpression">
+            <summary>
+              Looks up a localized string similar to tagExpression cannot be empty!.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Properties.UnitTestMessage.TagManager_ExpressionEvaluator_ExpectedEndOfTagExpression">
+            <summary>
+              Looks up a localized string similar to Expected end of tag expression &quot;{0}&quot; at position {1}!.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Properties.UnitTestMessage.TagManager_ExpressionEvaluator_ExpectedTag">
+            <summary>
+              Looks up a localized string similar to Tag expected in expression &quot;{0}&quot; at position {1}!.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Properties.UnitTestMessage.TagManager_ExpressionEvaluator_InvalidTagExpression">
+            <summary>
+              Looks up a localized string similar to Invalid tag expression &quot;{0}&quot; (expected &quot;{1}&quot; at position {2})!.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Properties.UnitTestMessage.TagTestRunFilter_TaggingInUse">
+            <summary>
+              Looks up a localized string similar to Tag expression &quot;{0}&quot; is in use..
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Properties.UnitTestMessage.TestClassHelper_ExclusiveClassesInUse">
+            <summary>
+              Looks up a localized string similar to Exclusive classes are in use.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Properties.UnitTestMessage.TestMethodHelper_ExclusiveMethodsInUse">
+            <summary>
+              Looks up a localized string similar to Exclusive methods are in use.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Properties.UnitTestMessage.TestMethodManager_CompleteMethod_UnVerifiedBug">
+            <summary>
+              Looks up a localized string similar to The known issue could not be verified. A failure will be recorded. If this bug has been fixed, please mark the Fixed attribute value to True..
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Properties.UnitTestMessage.UnitTestCompositeWorkItem_ctor_NoTestHarness">
+            <summary>
+              Looks up a localized string similar to No TestHarness is available..
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Properties.UnitTestMessage.UnitTestContext_FeatureNotSupported">
+            <summary>
+              Looks up a localized string similar to The &quot;{0}&quot; functionality is not supported within this unit test system..
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Properties.UnitTestMessage.UnitTestHarness_Initialize_UnitTestHarnessInitialize">
+            <summary>
+              Looks up a localized string similar to Initialization of UnitTestHarness.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Properties.UnitTestMessage.UnitTestHarness_RunNextStep_NoCompositeWorkItemsExist">
+            <summary>
+              Looks up a localized string similar to No composite work items exist to be cleared..
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Properties.UnitTestMessage.UnitTestHarness_TestAssembliesNotActionable">
+            <summary>
+              Looks up a localized string similar to No test classes were selected to be in the test run..
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Properties.UnitTestMessage.UnitTestSystem_Run_NoTestHarnessInSettings">
+            <summary>
+              Looks up a localized string similar to Test harness was not specified on test harness settings object. If a test harness settings object was passed in, please verify that it contains a reference to a test harness..
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Properties.UnitTestMessage.WorkItemTest_EnqueueWorkItem_AsynchronousFeatureUnavailable">
+            <summary>
+              Looks up a localized string similar to Test bug: A test cannot use Test Task objects, such as callbacks and conditionals, or the PumpMessages feature, unless marked with the [Asynchronous] attribute..
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.UnitTestSystem">
+            <summary>
+            A central entry point for unit test projects and applications.
+            </summary>
+            <summary>
+            A central entry point for unit test projects and applications.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTestSystem.UnitTestSystemName">
+            <summary>
+            Friendly unit test system name.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTestSystem.PrepareCustomLogProviders(Microsoft.Silverlight.Testing.UnitTestSettings)">
+            <summary>
+            A partial method for PrepareDefaultLogManager.
+            </summary>
+            <param name="settings">The test harness settings.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTestSystem.SetTestService(Microsoft.Silverlight.Testing.UnitTestSettings)">
+            <summary>
+            A partial method for setting the TestService.
+            </summary>
+            <param name="settings">The test harness settings.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTestSystem.CreateTestPage">
+            <summary>
+            Creates a new TestPage visual that in turn will setup and begin a 
+            unit test run.
+            </summary>
+            <returns>A new RootVisual.</returns>
+            <remarks>Assumes the calling assembly is a test assembly.</remarks>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTestSystem.CreateTestPage(Microsoft.Silverlight.Testing.UnitTestSettings)">
+            <summary>
+            Creates a new TestPage visual that in turn will setup and begin a 
+            unit test run.
+            </summary>
+            <param name="settings">Test harness settings to be applied.</param>
+            <returns>A new RootVisual.</returns>
+            <remarks>Assumes the calling assembly is a test assembly.</remarks>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTestSystem.MergeSettingsAndParameters(Microsoft.Silverlight.Testing.Harness.TestServiceProvider,Microsoft.Silverlight.Testing.UnitTestSettings)">
+            <summary>
+            Merge any settings provided by a test service with the parameters 
+            that were passed inside the TestHarnessSettings.
+            </summary>
+            <param name="testService">The test service.</param>
+            <param name="inputSettings">The run settings.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTestSystem.PrepareTestService(Microsoft.Silverlight.Testing.UnitTestSettings,System.Action)">
+            <summary>
+            Initializes the test service and its contained providers.
+            </summary>
+            <param name="inputSettings">The run settings.</param>
+            <param name="complete">Action to call once the test service is 
+            initialized and ready to continue the run's execution.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTestSystem.RegisterUnitTestProvider(Microsoft.Silverlight.Testing.UnitTesting.Metadata.IUnitTestProvider)">
+            <summary>
+            Register another available unit test provider for the unit test system.
+            </summary>
+            <param name="provider">A unit test provider.</param>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTestSystem._harness">
+            <summary>
+            Test harness instance.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTestSystem.Run(Microsoft.Silverlight.Testing.UnitTestSettings)">
+            <summary>
+            Start a new unit test run.
+            </summary>
+            <param name="settings">Unit test settings object.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTestSystem.SetStandardLogProviders(Microsoft.Silverlight.Testing.UnitTestSettings)">
+            <summary>
+            Prepares the default log manager.
+            </summary>
+            <param name="settings">The test harness settings.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTestSystem.TryAddVisualStudioLogProvider(Microsoft.Silverlight.Testing.UnitTestSettings)">
+            <summary>
+            Tries to instantiate and initialize a VSTT provider. Requires that 
+            XLinq is available and included in the application package.
+            </summary>
+            <param name="settings">The test harness settings object.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTestSystem.CreateDefaultSettings">
+            <summary>
+            Creates the default settings that would be used by the UnitTestHarness
+            if none were specified.
+            </summary>
+            <returns>A new RootVisual.</returns>
+            <remarks>Assumes the calling assembly is a test assembly.</remarks>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTestSystem.OnTestHarnessCompleted(Microsoft.Silverlight.Testing.Harness.TestHarnessCompletedEventArgs)">
+            <summary>
+            Call the TestHarnessCompleted event.
+            </summary>
+            <param name="args">The test harness completed event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTestSystem.CreateDefaultSettings(System.Reflection.Assembly)">
+            <summary>
+            Create a default settings object for unit testing.
+            </summary>
+            <param name="callingAssembly">The assembly reflection object.</param>
+            <returns>A unit test settings instance.</returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTestSystem.SystemName">
+            <summary>
+            Gets the test system name built into the assembly.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTestSystem.FrameworkFileVersion">
+            <summary>
+            Gets a string representing the file version attribute of the main
+            unit test framework assembly, if present.
+            </summary>
+        </member>
+        <member name="E:Microsoft.Silverlight.Testing.UnitTestSystem.TestHarnessCompleted">
+            <summary>
+            A completed test harness handler.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.WorkItemExtensions">
+            <summary>
+            A class contains extension methods and helpers for dealing with WorkItem
+            instances and improving framework performance.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.WorkItemExtensions.EnqueueQuickWorkItem(Microsoft.Silverlight.Testing.WorkItemTest,Microsoft.Silverlight.Testing.WorkItem)">
+            <summary>
+            Enqueues a work item into the task queue. The work item will run
+            immediately following the previous work item, and may not leave any
+            time before executing the next. This is a specialized method to be
+            used for performance improvements.
+            </summary>
+            <param name="test">The work item test.</param>
+            <param name="workItem">The unit of work.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.WorkItemExtensions.EnqueueQuickCallback(Microsoft.Silverlight.Testing.WorkItemTest,System.Action)">
+            <summary>
+            Enqueues a method into the task queue. The method will run
+            immediately following the previous work item, and may not leave any
+            time before executing the next. This is a specialized method to be
+            used for performance improvements.
+            </summary>
+            <param name="test">The work item test.</param>
+            <param name="callback">The callback action or method.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.WorkItemExtensions.EnqueueQuickConditional(Microsoft.Silverlight.Testing.WorkItemTest,System.Func{System.Boolean})">
+            <summary>
+            Enqueues a conditional statement into the task queue. The method will
+            run immediately following the previous work item, and may not leave
+            any time before executing the next. This is a specialized method to
+            be used for performance improvements.
+            </summary>
+            <param name="test">The work item test.</param>
+            <param name="conditional">The conditional function or statement.</param>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.WorkItemTest">
+            <summary>
+            Custom test class that provides the ability to perform semi-asynchronous 
+            test tasks on the main thread.  Requires the custom unit test harness 
+            that manages and invokes test work items on the thread when needed.
+            
+            Tests using this functionality will not be compatible with the full 
+            desktop framework's Visual Studio Team Test environment.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.WorkItemTest.TestComplete">
+            <summary>
+            Signal that a test is complete when using Async testing.  
+            
+            WARNING: If you use your own methods for completing, such as an 
+            HtmlTimer or other threading method, it is possible that this call 
+            will occur *AFTER* the test has timed out when using Timeouts.  As 
+            such, be very careful as you could complete the call to the *next* 
+            test.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.WorkItemTest.EnqueueWorkItem(Microsoft.Silverlight.Testing.WorkItem)">
+            <summary>
+            Add a task object to the test queue.  For a test that is currently 
+            executing, all tasks contained within the queue are executed to 
+            completion (unless an Exception is thrown) -before- moving on to 
+            the next test.
+            
+            The test task queue replaces the PumpMessages(...) system that 
+            permitted a single callback.  This enables specialized tasks, such 
+            as DOM bridge tasks, sleep tasks, and conditional continue tasks.
+            </summary>
+            <param name="testTaskObject">Asynchronous test task 
+            instance.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.WorkItemTest.EnqueueDelay(System.TimeSpan)">
+            <summary>
+            Delay a minimum amount of time before continuing. Similar to a sleep
+            call that is not a blocking call.
+            </summary>
+            <param name="delay">The minimum time span to wait before continuing.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.WorkItemTest.CreateDelay(System.TimeSpan)">
+            <summary>
+            Creates a delay work item instance.
+            </summary>
+            <param name="delay">The minimum time span to wait before continuing.</param>
+            <returns>Returns a new work item.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.WorkItemTest.EnqueueDelay(System.Double)">
+            <summary>
+            Delay a minimum amount of time before continuing. Similar to a sleep
+            call that is not a blocking call.
+            </summary>
+            <param name="milliseconds">The minimum number of milliseconds to wait
+            until the delay is finished.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.WorkItemTest.EnqueueConditional(System.Func{System.Boolean})">
+            <summary>
+            Requires a bool returning delegate to be passed in. Instructs the 
+            test task queue to wait until the conditional call returns True to 
+            continue executing other test tasks and/or ending the test method.
+            </summary>
+            <param name="conditionalDelegate">Conditional method or delegate. 
+            Test will halt until this condition returns True.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.WorkItemTest.CreateConditional(System.Func{System.Boolean})">
+            <summary>
+            Creates a conditional work item instance.
+            </summary>
+            <param name="conditionalDelegate">Conditional method or delegate. 
+            Test will halt until this condition returns True.</param>
+            <returns>Returns a new work item.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.WorkItemTest.EnqueueTestComplete">
+            <summary>
+            Enqueue a test task which calls the TestComplete method of 
+            SilverlightTest.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.WorkItemTest.EnqueueCallback(System.Action)">
+            <summary>
+            Add a Callback method into the test task queue.  Similar to the 
+            PumpMessages(...) call, with the difference being that there is no 
+            longer a single requirement: you can enqueue several callback 
+            methods and other test tasks, all of which will execute before the 
+            test completes and/or the engine continues.
+            </summary>
+            <param name="testCallbackDelegate">Void-returning delegate, 
+            anonymous delegates work fine too.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.WorkItemTest.CreateCallback(System.Action)">
+            <summary>
+            Creates a callback work item instance.
+            </summary>
+            <param name="testCallbackDelegate">Void-returning delegate, 
+            anonymous delegates work fine too.</param>
+            <returns>Returns a new work item.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.WorkItemTest.EnqueueCallback(System.Action[])">
+            <summary>
+            Adds a number of callback methods into the test task queue.
+            </summary>
+            <param name="actions">Set of Action instances.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.WorkItemTest.Sleep(System.Int32,System.Action)">
+            <summary>
+            Sleep a minimum number of milliseconds before calling a test 
+            callback delegate.
+            </summary>
+            <param name="sleepMillisecondsMinimum">Minimum number of 
+            milliseconds to sleep.  The only guarantee to the tester 
+            is that the sleep will be >= this amount of ms, and NOT 
+            that there is precision or an exact time.</param>
+            <param name="testCallback">Callback method to 
+            execute after the minimum amount of time has 
+            elapsed.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.WorkItemTest.Enqueue(System.Action)">
+            <summary>
+            Enqueue an action.  A shortcut for the EnqueueCallback.
+            </summary>
+            <param name="action">The action to enqueue.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.WorkItemTest.EnqueueSleep(System.Int32)">
+            <summary>
+            Sleep a minimum number of milliseconds.  This is the simplified 
+            overload which requires no callback.
+            </summary>
+            <param name="sleepMillisecondsMinimum">Minimum number of 
+            milliseconds to sleep.  The only guarantee to the tester is that the
+            sleep will be >= this amount of ms, and NOT that there is precision 
+            or an exact time.</param>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.ExclusiveAttribute">
+            <summary>
+            A special indicator attribute to enable better debugging using 
+            Microsoft.Silverlight.Testing.  
+            
+            As there is very little parameter information available for a test run, 
+            this attribute singles out specific classes to execute when found.
+            
+            This attribute is unique to this environment and not compatible with any 
+            desktop unit test framework without using a shim if it is left in code.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.PresentationTest">
+            <summary>
+            Implementation of useful properties and features for presentation 
+            platform tests (Silverlight and WPF).
+            
+            Tests using this functionality will not be compatible with the full 
+            desktop framework's Visual Studio Team Test environment.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.PresentationTest.TestPanel">
+            <summary>
+            Gets the test panel.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.SilverlightTest">
+            <summary>
+            Provides access to Silverlight-specific test features and 
+            functionality.
+            
+            Tests using this functionality will not be compatible with the full 
+            desktop framework's Visual Studio Team Test environment.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.WorkItem">
+            <summary>
+            A test work item is a task that is invoked until it is complete.  It 
+            maintains its own state to be able to notify the caller when it is 
+            finally complete, with no further work to be run.
+            
+            It is possible that some implementations of a TestWorkItem may actually 
+            contain a set of sub-tasks by implementing a composite pattern.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.WorkItem._canExecuteImmediately">
+            <summary>
+            A value indicating whether the task can immediately execute.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.WorkItem.Invoke">
+            <summary>
+            Invoke the task.  Return false only when the task is complete.
+            </summary>
+            <returns>True if there is additional work to be completed.  False 
+            when there is none.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.WorkItem.WorkItemComplete">
+            <summary>
+            Called by the task after the work is complete.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.WorkItem.IsComplete">
+            <summary>
+            Gets a value indicating whether the task's work is complete.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.WorkItem.CanExecuteImmediately">
+            <summary>
+            Gets or sets a value indicating whether the work item can be
+            executed immediately, and does not rely on special asynchronous
+            operation. Used for performance improvements. The setter is also
+            public.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.UnitTestLogMessageWriter">
+            <summary>
+            The extended writer for the unit testing harness and consumers.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.LogMessageWriter">
+            <summary>
+            A utility type that writes new log messages to the test harness log
+            queue.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.LogMessageWriter._factory">
+            <summary>
+            The factory used for creating new LogMessage types.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.LogMessageWriter._testHarness">
+            <summary>
+            The test harness that contains the method to post new events into
+            the log message queue.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessageWriter.#ctor(Microsoft.Silverlight.Testing.Harness.UnitTestHarness)">
+            <summary>
+            Initialize a new writer class, using the default LogMessageFactory
+            to create new messages.
+            </summary>
+            <param name="harness">The test harness instance.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessageWriter.#ctor(Microsoft.Silverlight.Testing.Harness.UnitTestHarness,Microsoft.Silverlight.Testing.Harness.LogMessageFactory)">
+            <summary>
+            Initialize a new writer class.
+            </summary>
+            <param name="harness">The test harness instance.</param>
+            <param name="messageFactory">
+            The factory to use when creating new messages.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessageWriter.Enqueue(Microsoft.Silverlight.Testing.Harness.LogMessage)">
+            <summary>
+            Posts a log message to the test harness queue for processing.
+            </summary>
+            <param name="message">The log message object.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessageWriter.Create">
+            <summary>
+            Creates a new log message using the embedded factory.
+            </summary>
+            <returns>Returns a new LogMessage instance.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessageWriter.Create(Microsoft.Silverlight.Testing.Harness.LogMessageType)">
+            <summary>
+            Creates a new log message using the embedded factory.
+            </summary>
+            <param name="messageType">The message type.</param>
+            <returns>Returns a new LogMessage instance.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessageWriter.Create(Microsoft.Silverlight.Testing.Harness.LogMessageType,System.String)">
+            <summary>
+            Creates a new log message using the embedded factory.
+            </summary>
+            <param name="messageType">The message type.</param>
+            <param name="message">The text message.</param>
+            <returns>Returns a new LogMessage instance.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessageWriter.Decorate(Microsoft.Silverlight.Testing.Harness.LogMessage,System.Object,System.Object)">
+            <summary>
+            Decorate a log message with a value.
+            </summary>
+            <param name="message">The log message to decorate.</param>
+            <param name="key">The key for this decoration.</param>
+            <param name="value">The value of this decoration.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessageWriter.DecorateException(Microsoft.Silverlight.Testing.Harness.LogMessage,System.Exception)">
+            <summary>
+            Decorate the log message object with an Exception object.
+            </summary>
+            <param name="message">The log message object.</param>
+            <param name="exception">The Exception.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessageWriter.DecorateNameProperty(Microsoft.Silverlight.Testing.Harness.LogMessage,System.String)">
+            <summary>
+            Decorate the log message object with a name.
+            </summary>
+            <param name="message">The log message object.</param>
+            <param name="name">Name property value.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessageWriter.DecorateTestStage(Microsoft.Silverlight.Testing.Harness.LogMessage,Microsoft.Silverlight.Testing.Harness.TestStage)">
+            <summary>
+            Decorate the log message object with a test stage value.
+            </summary>
+            <param name="message">The log message object.</param>
+            <param name="stage">Test stage value.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessageWriter.DecorateTestOutcome(Microsoft.Silverlight.Testing.Harness.LogMessage,Microsoft.Silverlight.Testing.Harness.TestOutcome)">
+            <summary>
+            Decorate the log message object with a test outcome object.
+            </summary>
+            <param name="message">The log message object.</param>
+            <param name="outcome">Test outcome object.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessageWriter.DecorateTestGranularity(Microsoft.Silverlight.Testing.Harness.LogMessage,Microsoft.Silverlight.Testing.Harness.TestGranularity)">
+            <summary>
+            Decorate the log message object with a test granularity object.
+            </summary>
+            <param name="message">The log message object.</param>
+            <param name="granularity">Test granularity object.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessageWriter.SetType(Microsoft.Silverlight.Testing.Harness.LogMessage,Microsoft.Silverlight.Testing.Harness.LogMessageType)">
+            <summary>
+            Sets the type of the log message.
+            </summary>
+            <param name="message">The log message object.</param>
+            <param name="type">The new value to set the message type to.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessageWriter.DebugWriteLine(System.String)">
+            <summary>
+            This writes a new line of information similar to a Debug::WriteLine
+            call.
+            </summary>
+            <param name="text">The text to write.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessageWriter.Information(System.String)">
+            <summary>
+            Writes information through a new log message.
+            </summary>
+            <param name="info">The information string.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessageWriter.TestInfrastructure(System.String)">
+            <summary>
+            Writes a message relating to the test infrastructure.
+            </summary>
+            <param name="text">The text to write.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessageWriter.Environment(System.String)">
+            <summary>
+            Writes an environment message.
+            </summary>
+            <param name="text">The text to write.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessageWriter.TestExecution(System.String)">
+            <summary>
+            Writes a TestRun message.
+            </summary>
+            <param name="text">The text to write.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessageWriter.Error(System.String,System.Exception)">
+            <summary>
+            Log an error message.
+            </summary>
+            <param name="errorMessage">The error message string.</param>
+            <param name="exception">The Exception object to decorate the message
+            with.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessageWriter.Error(System.String)">
+            <summary>
+            Log an error message.
+            </summary>
+            <param name="errorMessage">The error message string.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessageWriter.Warning(System.String,System.Exception)">
+            <summary>
+            Log a warning message.
+            </summary>
+            <param name="warningMessage">The warning message string.</param>
+            <param name="exception">The Exception object to decorate the message
+            with.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessageWriter.Warning(System.String)">
+            <summary>
+            Log a warning message.
+            </summary>
+            <param name="warningMessage">The warning message string.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessageWriter.TestResult(System.String,Microsoft.Silverlight.Testing.Harness.TestOutcome)">
+            <summary>
+            Record a test outcome.
+            </summary>
+            <param name="message">The accompanying message.</param>
+            <param name="outcome">The outcome value.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessageWriter.KnownIssue(System.String)">
+            <summary>
+            Writes information about an encountered, known issue.
+            </summary>
+            <param name="issue">Information about the known issue.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessageWriter.GranularTestStage(System.String,System.String,Microsoft.Silverlight.Testing.Harness.TestGranularity,Microsoft.Silverlight.Testing.Harness.TestStage)">
+            <summary>
+            Records a log message that indicates a named, granular test stage 
+            has happened.
+            </summary>
+            <param name="message">Any message for the log.</param>
+            <param name="name">A name for the object or event.</param>
+            <param name="granularity">The test granularity value.</param>
+            <param name="stage">The test stage value.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestLogMessageWriter.#ctor(Microsoft.Silverlight.Testing.Harness.UnitTestHarness)">
+            <summary>
+            Initializes the unit test log message writer helper.
+            </summary>
+            <param name="harness">The test harness reference.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestLogMessageWriter.MarkUnitTestMessage(Microsoft.Silverlight.Testing.Harness.LogMessage)">
+            <summary>
+            Marks a message as a unit test system-specific message.
+            </summary>
+            <param name="message">The log message object.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestLogMessageWriter.IncorrectException(System.Type,System.Type,Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass,Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod)">
+            <summary>
+            An incorrect exception type has occurred.
+            </summary>
+            <param name="expectedExceptionType">The expected type.</param>
+            <param name="actualExceptionType">The actual exception's type.</param>
+            <param name="test">The test metadata.</param>
+            <param name="method">The method metadata.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestLogMessageWriter.NoExceptionWhenExpected(System.Type,Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass,Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod)">
+            <summary>
+            No Exception was intercepted, yet one was expected.
+            </summary>
+            <param name="expectedExceptionType">The expected exception type.</param>
+            <param name="test">The test class metadata.</param>
+            <param name="method">The test method metadata.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestLogMessageWriter.LogException(System.Exception,Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass,Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod)">
+            <summary>
+            Logs and Exception that was intercepted or observed.
+            </summary>
+            <param name="exception">The actual Exception instance.</param>
+            <param name="test">The test class metadata.</param>
+            <param name="method">The test method metadata.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestLogMessageWriter.Ignore(Microsoft.Silverlight.Testing.Harness.TestGranularity,System.String)">
+            <summary>
+            Enqueues a Ignore message.
+            </summary>
+            <param name="granularity">The granularity of the ignore operation.</param>
+            <param name="name">The name of the test skipped.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestLogMessageWriter.TestRunFilterSelected(Microsoft.Silverlight.Testing.Harness.TestRunFilter)">
+            <summary>
+            Enqueues a message containing a test run filter.
+            </summary>
+            <param name="filter">The test run filter.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestLogMessageWriter.GranularAssemblyTestStage(Microsoft.Silverlight.Testing.UnitTesting.Metadata.IAssembly,Microsoft.Silverlight.Testing.Harness.TestGranularity,Microsoft.Silverlight.Testing.Harness.TestStage)">
+            <summary>
+            Records a log message that indicates a named, granular test stage has 
+            happened.
+            </summary>
+            <param name="assembly">The assembly metadata object.</param>
+            <param name="granularity">The test granularity value.</param>
+            <param name="stage">The test stage value.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestLogMessageWriter.TestClassStage(Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass,Microsoft.Silverlight.Testing.Harness.TestStage)">
+            <summary>
+            Log a test class's stage.
+            </summary>
+            <param name="test">The test class metadata object.</param>
+            <param name="stage">The test stage.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestLogMessageWriter.TestResult(Microsoft.Silverlight.Testing.Harness.ScenarioResult)">
+            <summary>
+            Log the result of a unit test scenario.
+            </summary>
+            <param name="result">The result of the test.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestLogMessageWriter.TestMethodStage(Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod,Microsoft.Silverlight.Testing.Harness.TestStage)">
+            <summary>
+            Log a test method's stage.
+            </summary>
+            <param name="method">The test method metadata object.</param>
+            <param name="stage">The test stage.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestLogMessageWriter.UnitTestHarnessStage(Microsoft.Silverlight.Testing.Harness.UnitTestHarness,System.String,Microsoft.Silverlight.Testing.Harness.TestStage)">
+            <summary>
+            Records a harness state for the unit test harness.
+            </summary>
+            <param name="harness">The unit test harness.</param>
+            <param name="name">The harness name.</param>
+            <param name="stage">The test stage.</param>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.UnitTestHarness">
+            <summary>
+            A test harness for interacting with unit test providers such as Visual 
+            Studio Team Test's metadata.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.HarnessName">
+            <summary>
+            Display name for this harness.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.UnitTestHarness._globalExceptions">
+            <summary>
+            Manages the attachment state of a global exception handler.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.UnitTestHarness._harnessTasks">
+            <summary>
+            Container of all work items for the test harness.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.UnitTestHarness._dispatcherStack">
+            <summary>
+            Manager of the stack of dispatchers, so that the appropriate parent 
+            container handles exceptions and completion events.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.UnitTestHarness._validTestAssemblies">
+            <summary>
+            Number of valid test assemblies encountered.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.UnitTestHarness._knownTestMethods">
+            <summary>
+            The current run's known number of test methods.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.UnitTestHarness._events">
+            <summary>
+            Backing field for the event firing helper.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.#ctor">
+            <summary>
+            Initiate unit test harness.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.UnitTestHarness._queuedLogMessages">
+            <summary>
+            Queue of log messages awaiting processing.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.AddLogProvider(Microsoft.Silverlight.Testing.Harness.LogProvider)">
+            <summary>
+            Adds a log provider to the listening log providers group.
+            </summary>
+            <param name="provider">Log provider object.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.QueueLogMessage(Microsoft.Silverlight.Testing.Harness.LogMessage)">
+            <summary>
+            Enqueue a log message object for processing by the log providers.
+            </summary>
+            <param name="message">The log message object.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.Run">
+            <summary>
+            Begin running the test harness.
+            </summary>
+            <remarks>
+            Make sure to subscribe to the Complete event before calling this 
+            method, in some harnesses this may be a synchronous Run followed 
+            immediately by the Complete event being fired.
+            </remarks>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.RunDispatcherComplete(System.Object,System.EventArgs)">
+            <summary>
+            Complete event.
+            </summary>
+            <param name="sender">The sender.</param>
+            <param name="e">The event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.WriteLogFile(System.String,System.String)">
+            <summary>
+            Stores a log file for the test run. Depending on the execution 
+            environment, this call may not successful.
+            </summary>
+            <param name="logName">The name of the log file.</param>
+            <param name="fileContent">The log file content as a string.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.PublishFinalResult">
+            <summary>
+            If supported by any attached test service, this publishes the final
+            test results. Typical harness implementations may immediately close
+            the web browser channel upon receiving the message, so any other
+            reporting should be done first.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.ProcessLogMessages">
+            <summary>
+            Process all queued log messages.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.InitializeSettings(Microsoft.Silverlight.Testing.UnitTestSettings)">
+            <summary>
+            Fill member variables with any non-null settings of the same type.
+            </summary>
+            <param name="settings">Settings container class.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.InitializeLogProviders">
+            <summary>
+            Initializes all log providers.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.OnTestHarnessCompleted">
+            <summary>
+            Call the TestHarnessCompleted event.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.OnPublishing(System.EventArgs)">
+            <summary>
+            Call the Publishing event.
+            </summary>
+            <param name="e">The event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.PublishResults">
+            <summary>
+            Overrides the PublishResults method so that final reporting is only
+            done once all other logging is finished.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.PublishFinalResults">
+            <summary>
+            Publish final results. If not yet ready, will keep waiting around
+            as a work item until it is done.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.UnitTestHarness._dispatcher">
+            <summary>
+            Stored dispatcher instance.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.IsReportingTestServiceConnected">
+            <summary>
+            Checks if a reporting provider is connected to the test service.
+            </summary>
+            <returns>Returns true if a reporting provider is connected to the
+            test service.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.SetOverallStatus(System.String)">
+            <summary>
+            Immediately sets the overall status using a log message and
+            processes the message queue.
+            </summary>
+            <param name="message">The message to set.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.PrepareCustomTestInstance(Microsoft.Silverlight.Testing.CustomFrameworkUnitTest)">
+            <summary>
+            Sets the unit test harness property for a test case that inherits 
+            from the abstract base type 'CustomTest'.
+            </summary>
+            <param name="customTest">A CustomText instance.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.Initialize">
+            <summary>
+            Initialize the harness with a set of test assemblies.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.RestartRunDispatcher">
+            <summary>
+            Restarts the run dispatcher.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.TrackScenarioResult(Microsoft.Silverlight.Testing.Harness.ScenarioResult)">
+            <summary>
+            Track the results for our execution and also track the fail state.
+            </summary>
+            <param name="result">Scenario result to process.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.OnTestAssemblyStarting(Microsoft.Silverlight.Testing.Harness.TestAssemblyStartingEventArgs)">
+            <summary>
+            Fires the test assembly starting event.
+            </summary>
+            <param name="e">The event data.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.OnIsDispatcherRunningChanged(System.EventArgs)">
+            <summary>
+            Fires the play pause event.
+            </summary>
+            <param name="e">Event data.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.OnTestAssemblyCompleted(Microsoft.Silverlight.Testing.Harness.TestAssemblyCompletedEventArgs)">
+            <summary>
+            Fires the test assembly completed event.
+            </summary>
+            <param name="e">The event data.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.OnTestClassStarting(Microsoft.Silverlight.Testing.Harness.TestClassStartingEventArgs)">
+            <summary>
+            Fires the test class starting event.
+            </summary>
+            <param name="e">The event data.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.OnTestClassCompleted(Microsoft.Silverlight.Testing.Harness.TestClassCompletedEventArgs)">
+            <summary>
+            Fires the test class completed event.
+            </summary>
+            <param name="e">The event data.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.OnTestMethodStarting(Microsoft.Silverlight.Testing.Harness.TestMethodStartingEventArgs)">
+            <summary>
+            Fires the test method starting event.
+            </summary>
+            <param name="e">The event data.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.OnTestMethodCompleted(Microsoft.Silverlight.Testing.Harness.TestMethodCompletedEventArgs)">
+            <summary>
+            Notifies observers that a test method has been completed. Also
+            clears the test panel's visual tree.
+            </summary>
+            <param name="e">The event data.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.OnTestRunStarting(Microsoft.Silverlight.Testing.Harness.TestRunStartingEventArgs)">
+            <summary>
+            Notifies observers that a test run has been started.
+            </summary>
+            <param name="e">The event data.</param>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.UnitTestHarness._testPage">
+            <summary>
+            Reference to the test page object.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.ReportCodeCoverage(Microsoft.Silverlight.Testing.Harness.TestServiceProvider)">
+            <summary>
+            Attempts to report the code coverage information using the test 
+            service provider. If there is no available coverage reporting 
+            service, this is a silent failure. Only reports if >= 1 blocks 
+            are hit.
+            </summary>
+            <param name="testService">The test service.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.EnqueueTestAssembly(System.Reflection.Assembly,Microsoft.Silverlight.Testing.Harness.TestRunFilter)">
+            <summary>
+            Enqueue a test assembly from a simple Assembly reference.
+            </summary>
+            <param name="assembly">The test assembly.</param>
+            <param name="runFilter">The run filter settings for the test assembly's run.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.EnqueueTestAssembly(Microsoft.Silverlight.Testing.UnitTesting.Metadata.IAssembly,Microsoft.Silverlight.Testing.Harness.TestRunFilter)">
+            <summary>
+            Enqueues a test assembly.
+            </summary>
+            <param name="testAssembly">The test assembly metadata.</param>
+            <param name="runFilter">The run filter settings for the test assembly's run.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.RunNextStep">
+            <summary>
+            Flush the current log manager and then perform the next invoke.
+            </summary>
+            <returns>Returns true if work remains.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.CreateTestRunFilter(Microsoft.Silverlight.Testing.UnitTestSettings)">
+            <summary>
+            Creates the test run filter for the initial run.
+            </summary>
+            <param name="settings">The unit test settings.</param>
+            <returns>Returns a new TestRunFilter instance.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.PrepareTestAssemblyTasks">
+            <summary>
+            Determine what test assemblies need to be executed. Enqueue tasks 
+            for the unit test assembly providers to run the tests.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.CalculateTotalMethods(Microsoft.Silverlight.Testing.Harness.AssemblyManager,Microsoft.Silverlight.Testing.UnitTesting.Metadata.IAssembly,Microsoft.Silverlight.Testing.Harness.TestRunFilter)">
+            <summary>
+            Calculates the number of methods for a run.
+            </summary>
+            <param name="assemblyManager">The assembly manager.</param>
+            <param name="assembly">The test assembly.</param>
+            <param name="filter">The test run filter.</param>
+            <returns>Returns the number of known methods returned.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.HarnessComplete(System.Object,System.EventArgs)">
+            <summary>
+            Event fired at the completion of the harness' work.
+            </summary>
+            <param name="sender">Sender object instance.</param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.GlobalUnhandledExceptionListener(System.Object,System.EventArgs)">
+            <summary>
+            Listener event for any unhandled exceptions.
+            </summary>
+            <param name="sender">Sender object instance.</param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.CreateHarnessTasks">
+            <summary>
+            Creates the set of harness tasks to run and hooks up to the Complete event.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.Results">
+            <summary>
+            Gets the list of results.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.LogWriter">
+            <summary>
+            Gets the log message writer instance.  This can be used to easily 
+            post informative messages to the log message queue and providers.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.LogicFactory">
+            <summary>
+            Gets or sets the logic factory used for instantiating the 
+            unit test logic and management objects.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.State">
+            <summary>
+            Gets or sets the overall harness state - overloaded types can be 
+            used to store additional information.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.LogProviders">
+            <summary>
+            Gets the log providers list.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.RunDispatcher">
+            <summary>
+            Gets or sets the wrapper that handles calling the next Run step 
+            method until complete; allows for a virtual Run method.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.Parameters">
+            <summary>
+            Gets the dictionary of Parameters passed into the test harness.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.Settings">
+            <summary>
+            Gets or sets the settings used to initialize the test harness.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.Events">
+            <summary>
+            Gets a set of events that can be fired for test results and other
+            important test runtime events.
+            </summary>
+        </member>
+        <member name="E:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.Publishing">
+            <summary>
+            The test harness is publishing results.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.TestService">
+            <summary>
+            Gets the TestService referenced by the test harness settings. The 
+            test service provides advanced, optional functionality that is 
+            useful to harness and test case developers. A typical test service 
+            operates outside the process or security boundary.
+            </summary>
+        </member>
+        <member name="E:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.TestHarnessCompleted">
+            <summary>
+            Complete event fired when the test harness has finished its test 
+            run.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.Dispatcher">
+            <summary>
+            Gets a dispatcher instance.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.RootCompositeWorkItem">
+            <summary>
+            Gets the root container for test work to be completed.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.TestMethodCount">
+            <summary>
+            Gets the known number of test methods in the current test run.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.InterceptAllExceptions">
+            <summary>
+            Gets or sets a value indicating whether to intercept exceptions at 
+            the app domain level and funnel into the current container or not.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.DispatcherStack">
+            <summary>
+            Gets the internal DispatcherStack being used by the test harness.
+            </summary>
+        </member>
+        <member name="E:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.TestAssemblyStarting">
+            <summary>
+            The test assembly starting event.
+            </summary>
+        </member>
+        <member name="E:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.IsDispatcherRunningChanged">
+            <summary>
+            On the play or pause change of the dispatcher.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.IsDispatcherRunning">
+            <summary>
+            Gets or sets a value indicating whether the dispatcher is currently
+            running.
+            </summary>
+        </member>
+        <member name="E:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.TestAssemblyCompleted">
+            <summary>
+            Test assembly completed event.
+            </summary>
+        </member>
+        <member name="E:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.TestClassStarting">
+            <summary>
+            Test class starting event.
+            </summary>
+        </member>
+        <member name="E:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.TestClassCompleted">
+            <summary>
+            The test class completed event.
+            </summary>
+        </member>
+        <member name="E:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.TestMethodStarting">
+            <summary>
+            The test method starting event.
+            </summary>
+        </member>
+        <member name="E:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.TestMethodCompleted">
+            <summary>
+            An event that is fired whenever a test method completes.
+            </summary>
+        </member>
+        <member name="E:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.TestRunStarting">
+            <summary>
+            An event that is fired when the test run is starting.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.TestPage">
+            <summary>
+            Gets or sets the test page.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.UnitTestHarness.TestPanelManager">
+            <summary>
+            Gets the test panel manager instance.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.UnitTestLogDecorator">
+            <summary>
+            Well-known keys that can be used to mark decorator instances in log 
+            message objects.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.UnitTestLogDecorator.IsUnitTestMessage">
+            <summary>
+            Indicates that the message is specific to the unit test system.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.UnitTestLogDecorator.UnitTestHarness">
+            <summary>
+            The unit test harness reference.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.UnitTestLogDecorator.TestAssemblyMetadata">
+            <summary>
+            The metadata interfacing object for a test assembly.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.UnitTestLogDecorator.TestClassMetadata">
+            <summary>
+            The metadata interfacing object for a test class.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.UnitTestLogDecorator.TestMethodMetadata">
+            <summary>
+            The metadata interfacing object for a test method.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.UnitTestLogDecorator.IncorrectExceptionMessage">
+            <summary>
+            Indicates that the incorrect exception was intercepted.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.UnitTestLogDecorator.IgnoreMessage">
+            <summary>
+            Indicates that the message indicates a skipped/ignored item.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.UnitTestLogDecorator.ExpectedExceptionType">
+            <summary>
+            The type of the expected exception.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.UnitTestLogDecorator.ActualExceptionType">
+            <summary>
+            The type of the actual exception.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.UnitTestLogDecorator.ActualException">
+            <summary>
+            The actual exception.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.UnitTestLogDecorator.TestRunFilter">
+            <summary>
+            A TestRunFilter object.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.UnitTestLogDecorator.ScenarioResult">
+            <summary>
+            A ScenarioResult object.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.UnitTestMessageConditional">
+            <summary>
+            Helper conditional methods for unit test-specific log messages.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestMessageConditional.IsUnitTestEndMessage(Microsoft.Silverlight.Testing.Harness.LogMessage)">
+            <summary>
+            Determines whether a log message meets a specific condition or set 
+            of conditions.
+            </summary>
+            <param name="message">The log message object.</param>
+            <returns>Returns true if the condition is met.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestMessageConditional.IsUnitTestStartMessage(Microsoft.Silverlight.Testing.Harness.UnitTestLogDecorator)">
+            <summary>
+            Determines whether a log message meets a specific condition or set 
+            of conditions.
+            </summary>
+            <param name="decorator">The unit test decorator of interest.</param>
+            <returns>Returns true if the condition is met.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestMessageConditional.IsUnitTestMessage(Microsoft.Silverlight.Testing.Harness.LogMessage)">
+            <summary>
+            Returns a value indicating whether the message is marked as a unit
+            test system message.
+            </summary>
+            <param name="message">The message.</param>
+            <returns>Returns true if the message is a unit test system-marked 
+            message.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestMessageConditional.HasUnitTestOutcome(Microsoft.Silverlight.Testing.Harness.LogMessage)">
+            <summary>
+            Determines whether a log message meets a specific condition or set 
+            of conditions.
+            </summary>
+            <param name="message">The log message object.</param>
+            <returns>Returns true if the condition is met.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestMessageConditional.IsIgnoreMessage(Microsoft.Silverlight.Testing.Harness.LogMessage)">
+            <summary>
+            Determines whether a log message meets a specific condition or set 
+            of conditions.
+            </summary>
+            <param name="message">The log message object.</param>
+            <returns>Returns true if the condition is met.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestMessageConditional.IsTestRunFilterMessage(Microsoft.Silverlight.Testing.Harness.LogMessage)">
+            <summary>
+            Determines whether a log message has an attached TestRunFilter.
+            </summary>
+            <param name="message">The log message object.</param>
+            <returns>Returns a value indicating whether the condition is met.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestMessageConditional.IsExceptionLogMessage(Microsoft.Silverlight.Testing.Harness.LogMessage)">
+            <summary>
+            Determines whether a log message meets a specific condition or set 
+            of conditions.
+            </summary>
+            <param name="message">The log message object.</param>
+            <returns>Returns true if the condition is met.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestMessageConditional.IsIncorrectExceptionLogMessage(Microsoft.Silverlight.Testing.Harness.LogMessage)">
+            <summary>
+            Determines whether a log message meets a specific condition or set 
+            of conditions.
+            </summary>
+            <param name="message">The log message object.</param>
+            <returns>Returns true if the condition is met.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestMessageConditional.IsKnownBug(Microsoft.Silverlight.Testing.Harness.LogMessage)">
+            <summary>
+            Determines whether a log message meets a specific condition or set 
+            of conditions.
+            </summary>
+            <param name="message">The log message object.</param>
+            <returns>Returns true if the condition is met.</returns>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.LazyAssemblyMethodInfo">
+            <summary>
+            A lazy method type.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.LazyMethodInfo">
+            <summary>
+            A class that does a lazy lookup when needed using reflection.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.LazyMethodInfo._attributeType">
+            <summary>
+            Attribute Type instance.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.LazyMethodInfo._searchType">
+            <summary>
+            The Type to search with.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.LazyMethodInfo._hasSearched">
+            <summary>
+            Whether the search has happened.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.LazyMethodInfo._methodInfo">
+            <summary>
+            The method reflection object.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LazyMethodInfo.#ctor(System.Type)">
+            <summary>
+            Construct a new lazy method wrapper.
+            </summary>
+            <param name="attributeType">The attribute type.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LazyMethodInfo.#ctor(System.Type,System.Type)">
+            <summary>
+            Construct a new lazy method wrapper.
+            </summary>
+            <param name="searchType">Type to search.</param>
+            <param name="attributeType">Attribute type.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LazyMethodInfo.GetMethodInfo">
+            <summary>
+            Does a search and retrieves the method information.
+            </summary>
+            <returns>The method reflection object.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LazyMethodInfo.HasMethodInfo">
+            <summary>
+            Whether the type has a method info.
+            </summary>
+            <returns>A value indicating whether the method information has 
+            been found.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LazyMethodInfo.Search">
+            <summary>
+            Perform a search on the type.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.LazyMethodInfo.AttributeType">
+            <summary>
+            Gets the type of attribute the lazy method is searching for.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.LazyMethodInfo.SearchType">
+            <summary>
+            Gets the underlying type that is searched.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.LazyMethodInfo.HasSearched">
+            <summary>
+            Gets or sets a value indicating whether a lookup has already been attempted.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.LazyMethodInfo.MethodInfo">
+            <summary>
+            Gets or sets the underlying MethodInfo from reflection.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.LazyAssemblyMethodInfo._assembly">
+            <summary>
+            Underlying Assembly reflection object.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LazyAssemblyMethodInfo.#ctor(System.Reflection.Assembly,System.Type)">
+            <summary>
+            Create a new lazy method from a MethodInfo instance.
+            </summary>
+            <param name="assembly">Assembly reflection object.</param>
+            <param name="attributeType">Attribute Type instance.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LazyAssemblyMethodInfo.Search">
+            <summary>
+            Performs a search on the MethodInfo for the attributes needed.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.UnitTesting.Metadata.IAssembly">
+            <summary>
+            Test assembly metadata interface.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.IAssembly.GetTestClasses">
+            <summary>
+            Gets a collection of test class metadata objects.
+            </summary>
+            <returns>Returns a collection of metadata objects.</returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.IAssembly.AssemblyInitializeMethod">
+            <summary>
+            Gets the initialization method.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.IAssembly.AssemblyCleanupMethod">
+            <summary>
+            Gets the cleanup method.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.IAssembly.Provider">
+            <summary>
+            Gets a reference to the unit test provider.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.IAssembly.Name">
+            <summary>
+            Gets the name of the test assembly.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.IAssembly.TestHarness">
+            <summary>
+            Gets the test harness used to initialize the assembly.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.UnitTesting.Metadata.IExpectedException">
+            <summary>
+            An expected exception marker for a test method.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.IExpectedException.ExceptionType">
+            <summary>
+            Gets the expected exception type.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.IExpectedException.Message">
+            <summary>
+            Gets any message associated with the expected exception object.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.UnitTesting.Metadata.IHostType">
+            <summary>
+            Represents the host type information for a test.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.IHostType.HostType">
+            <summary>
+            Gets the Host type.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.IHostType.HostData">
+            <summary>
+            Gets the host data.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.UnitTesting.Metadata.IPriority">
+            <summary>
+            A representation of a test's priority.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass">
+            <summary>
+            Metadata representing a test class.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass.GetTestMethods">
+            <summary>
+            Retrieve a collection of the test method metadata objects setup by 
+            the unit test provider.
+            </summary>
+            <returns>A collection of test method interfaces.</returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass.Type">
+            <summary>
+            Gets the test class Type instance.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass.Ignore">
+            <summary>
+            Gets a value indicating whether the test class should be ignored.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass.TestInitializeMethod">
+            <summary>
+            Gets the per-test initialization method.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass.TestCleanupMethod">
+            <summary>
+            Gets the per-test cleanup method.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass.ClassInitializeMethod">
+            <summary>
+            Gets the one-time class initialization method.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass.ClassCleanupMethod">
+            <summary>
+            Gets the one-time class cleanup method.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass.Name">
+            <summary>
+            Gets the name of the test class.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass.Assembly">
+            <summary>
+            Gets a reference to the parent test assembly metadata 
+            instance.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod">
+            <summary>
+            Test method metadata.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod.DecorateInstance(System.Object)">
+            <summary>
+            Used for decorating with unit test provider-specific capabilities, 
+            such as the TestContext concept.
+            </summary>
+            <param name="instance">Instance to decorate.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod.GetDynamicAttributes">
+            <summary>
+            Get any attribute on the test method that are provided dynamically.
+            </summary>
+            <returns>
+            Dynamically provided attributes on the test method.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod.Invoke(System.Object)">
+            <summary>
+            Invoke the test method.
+            </summary>
+            <param name="instance">Instance of the test class.</param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod.Method">
+            <summary>
+            Gets the test method reflection object.
+            </summary>
+        </member>
+        <member name="E:Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod.WriteLine">
+            <summary>
+            Hooks up to any unit test provider-enabled WriteLine capability 
+            for unit tests.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod.Ignore">
+            <summary>
+            Gets a value indicating whether the test is marked to be ignored.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod.Description">
+            <summary>
+            Gets any description for the method.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod.Name">
+            <summary>
+            Gets a name for the method.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod.Category">
+            <summary>
+            Gets any category information for the method.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod.Owner">
+            <summary>
+            Gets any test owner information.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod.ExpectedException">
+            <summary>
+            Gets any expected exception attribute .
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod.Timeout">
+            <summary>
+            Gets any timeout information.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod.Properties">
+            <summary>
+            Gets a collection of any test properties.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod.WorkItems">
+            <summary>
+            Gets a collection of any test work items.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod.Priority">
+            <summary>
+            Gets any priority information.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestProperty">
+            <summary>
+            A property for a test method.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestProperty.Name">
+            <summary>
+            Gets the test property name.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestProperty.Value">
+            <summary>
+            Gets the test property value.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.UnitTesting.Metadata.IUnitTestProvider">
+            <summary>
+            Provider model for a unit test system that uses reflection and metadata 
+            to enable a unit test run.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.IUnitTestProvider.GetUnitTestAssembly(Microsoft.Silverlight.Testing.Harness.UnitTestHarness,System.Reflection.Assembly)">
+            <summary>
+            Retrieve the metadata instance for a test assembly given a 
+            reflection Assembly instance.
+            </summary>
+            <param name="testHarness">The test harness using the provider.</param>
+            <param name="assemblyReference">Reflected test assembly.</param>
+            <returns>Unit test provider-specific metadata instance for 
+            the test assembly.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.IUnitTestProvider.HasCapability(Microsoft.Silverlight.Testing.UnitTesting.Metadata.UnitTestProviderCapabilities)">
+            <summary>
+            Gets a value indicating whether a specific capability or set of 
+            capabilities are supported by the unit test provider.
+            </summary>
+            <param name="capability">Capability of interest.</param>
+            <returns>Gets a value indicating whether the capability is 
+            supported.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.IUnitTestProvider.IsFailedAssert(System.Exception)">
+            <summary>
+            Checks if an Exception actually represents an assertion that failed 
+            to improve the logging experience.
+            </summary>
+            <param name="exception">Exception object.</param>
+            <returns>Returns true if the Exception is an assertion exception 
+            type.</returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.IUnitTestProvider.Name">
+            <summary>
+            Gets the name of the unit test provider.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.IUnitTestProvider.Capabilities">
+            <summary>
+            Gets the capabilities that the unit test provider implements.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.UnitTesting.Metadata.IWorkItemMetadata">
+            <summary>
+            Work item for a test.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.IWorkItemMetadata.Data">
+            <summary>
+            Gets the associated information from the work item.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.UnitTesting.Metadata.StringEventArgs">
+            <summary>
+            Event arguments that pass along a string value.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.StringEventArgs.#ctor">
+            <summary>
+            Create a new event argument instance.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.StringEventArgs.#ctor(System.String)">
+            <summary>
+            Create a new event argument instance that stores a string value.
+            </summary>
+            <param name="value">String value to pass along.</param>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.StringEventArgs._value">
+            <summary>
+            String value stored in the event arguments.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.StringEventArgs.Value">
+            <summary>
+            Gets the stored string value.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.UnitTesting.Metadata.UnitTestProviderCapabilities">
+            <summary>
+            A set of capabilities that a unit test provider may chose to implement 
+            through the metadata interfaces.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.UnitTestProviderCapabilities.None">
+            <summary>
+            No defined capabilities.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.UnitTestProviderCapabilities.AssemblySupportsInitializeMethod">
+            <summary>
+            Support for attribute [AssemblyInitialize].
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.UnitTestProviderCapabilities.AssemblySupportsCleanupMethod">
+            <summary>
+            Support for attribute [AssemblyCleanup].
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.UnitTestProviderCapabilities.ClassCanIgnore">
+            <summary>
+            Support for attribute [Ignore] for classes.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.UnitTestProviderCapabilities.MethodCanIgnore">
+            <summary>
+            Support for attribute [Ignore] for methods.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.UnitTestProviderCapabilities.MethodCanDescribe">
+            <summary>
+            Support for attribute [Description] on methods.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.UnitTestProviderCapabilities.MethodCanCategorize">
+            <summary>
+            Support for attribute [Category] on methods.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.UnitTestProviderCapabilities.MethodCanHaveOwner">
+            <summary>
+            Support for attribute [Owner] on method.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.UnitTestProviderCapabilities.MethodCanHavePriority">
+            <summary>
+            Support for attribute [Priority] on method.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.UnitTestProviderCapabilities.MethodCanHaveProperties">
+            <summary>
+            Support for attribute [TestProperty](...) on methods.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.UnitTestProviderCapabilities.MethodCanHaveTimeout">
+            <summary>
+            Support for attribute [Timeout] on methods.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.UnitTestProviderCapabilities.MethodCanHaveWorkItems">
+            <summary>
+            Support for attribute [WorkItem(...)]('s) on methods.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.SleepWorkItem">
+            <summary>
+            Test work item type that does not complete until the sleep time has 
+            elapsed.  This is NOT a blocking Sleep.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.SleepWorkItem._delay">
+            <summary>
+            The amount of time to delay for.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.SleepWorkItem._expires">
+            <summary>
+            The DateTime that marks the point in time the task is complete.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.SleepWorkItem.#ctor(System.TimeSpan)">
+            <summary>
+            Create a new Sleep work item, including the number of 
+            milliseconds to wait until continuing.
+            </summary>
+            <param name="delay">Amount of time to wait/delay.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.SleepWorkItem.Invoke">
+            <summary>
+            On the first time, will calculate the final DateTime.  Otherwise, 
+            null operation (returns) until that time.
+            </summary>
+            <returns>Returns a value indicating whether there is more work to be
+            done.</returns>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.ExpectedException">
+            <summary>
+            Expected exception metadata.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.ExpectedException.#ctor">
+            <summary>
+            Private constructor.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.ExpectedException.#ctor(Microsoft.VisualStudio.TestTools.UnitTesting.ExpectedExceptionAttribute)">
+            <summary>
+            Creates a new expected exception metadata wrapper.
+            </summary>
+            <param name="expectedExceptionAttribute">Attribute value.</param>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.ExpectedException._exp">
+            <summary>
+            The expected exception attribute.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.ExpectedException.ExceptionType">
+            <summary>
+            Gets the type of the expected exception.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.ExpectedException.Message">
+            <summary>
+            Gets any message to include in a failure.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.Priority">
+            <summary>
+            A simple wrapper for a priority integer value that overrides the 
+            ToString method.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.Priority.#ctor(System.Int32)">
+            <summary>
+            Initializes a new instance of the Priority class.
+            </summary>
+            <param name="priority">The priority.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.Priority.ToString">
+            <summary>
+            Gets the priority as string.
+            </summary>
+            <returns>Returns the priority.</returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.Priority.Value">
+            <summary>
+            Gets the priority value.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.ProviderAttributes">
+            <summary>
+            The set of provider attributes.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.ProviderAttributes.#cctor">
+            <summary>
+            Initializes the VSTT metadata provider.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.ProviderAttributes.TestClass">
+            <summary>
+            Gets VSTT [TestClass] attribute.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.ProviderAttributes.IgnoreAttribute">
+            <summary>
+            Gets VSTT [Ignore] attribute.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.ProviderAttributes.ClassInitialize">
+            <summary>
+            Gets VSTT [ClassInitialize] attribute.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.ProviderAttributes.Priority">
+            <summary>
+            Gets VSTT [Priority] attribute.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.ProviderAttributes.ClassCleanup">
+            <summary>
+            Gets VSTT [ClassCleanup] attribute.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.ProviderAttributes.TestInitialize">
+            <summary>
+            Gets VSTT [TestInitialize] attribute.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.ProviderAttributes.TestCleanup">
+            <summary>
+            Gets VSTT [TestCleanup] attribute.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.ProviderAttributes.DescriptionAttribute">
+            <summary>
+            Gets VSTT [Description] attribute.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.ProviderAttributes.TimeoutAttribute">
+            <summary>
+            Gets VSTT [Timeout] attribute.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.ProviderAttributes.OwnerAttribute">
+            <summary>
+            Gets VSTT [Owner] attribute.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.ProviderAttributes.ExpectedExceptionAttribute">
+            <summary>
+            Gets VSTT [ExpectedException] attribute.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.ProviderAttributes.AssemblyInitialize">
+            <summary>
+            Gets VSTT [AssemblyInitialize] attribute.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.ProviderAttributes.AssemblyCleanup">
+            <summary>
+            Gets VSTT [AssemblyCleanup] attribute.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.ProviderAttributes.TestMethod">
+            <summary>
+            Gets VSTT [TestMethod] attribute.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.ProviderAttributes.TestProperty">
+            <summary>
+            Gets VSTT [TestProperty] attribute.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestClass">
+            <summary>
+            Test class wrapper.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestClass.#ctor(Microsoft.Silverlight.Testing.UnitTesting.Metadata.IAssembly)">
+            <summary>
+            Construct a new test class metadata interface.
+            </summary>
+            <param name="assembly">Assembly metadata interface object.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestClass.#ctor(Microsoft.Silverlight.Testing.UnitTesting.Metadata.IAssembly,System.Type)">
+            <summary>
+            Creates a new test class wrapper.
+            </summary>
+            <param name="assembly">Assembly metadata object.</param>
+            <param name="testClassType">Type of the class.</param>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestClass._type">
+            <summary>
+            Test Type.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestClass._tests">
+            <summary>
+            Collection of test method interface objects.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestClass._testsLoaded">
+            <summary>
+            A value indicating whether tests are loaded.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestClass._m">
+            <summary>
+            A dictionary of method types and method interface objects.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestClass.GetTestMethods">
+            <summary>
+            Gets a collection of test method  wrapper instances.
+            </summary>
+            <returns>A collection of test method interface objects.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestClass.ToString">
+            <summary>
+            Exposes the name of the test class.
+            </summary>
+            <returns>Returns the name of the test class.</returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestClass.Assembly">
+            <summary>
+            Gets the test assembly metadata.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestClass.Type">
+            <summary>
+            Gets the underlying Type of the test class.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestClass.Name">
+            <summary>
+            Gets the name of the test class.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestClass.Ignore">
+            <summary>
+            Gets a value indicating whether an Ignore attribute present 
+            on the class.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestClass.TestInitializeMethod">
+            <summary>
+            Gets any test initialize method.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestClass.TestCleanupMethod">
+            <summary>
+            Gets any test cleanup method.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestClass.ClassInitializeMethod">
+            <summary>
+            Gets any class initialize method.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestClass.ClassCleanupMethod">
+            <summary>
+            Gets any class cleanup method.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestClass.Methods">
+            <summary>
+            Methods enum.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestClass.Methods.ClassInitialize">
+            <summary>
+            Initialize method.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestClass.Methods.ClassCleanup">
+            <summary>
+            Cleanup method.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestClass.Methods.TestInitialize">
+            <summary>
+            Test init method.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestClass.Methods.TestCleanup">
+            <summary>
+            Test cleanup method.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestMethod">
+            <summary>
+            A provider wrapper for a test method.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestMethod.ContextPropertyName">
+            <summary>
+            Property name for the TestContext.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestMethod.DefaultPriority">
+            <summary>
+            Default value for methods when no priority attribute is defined.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestMethod.None">
+            <summary>
+            An empty object array.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestMethod._methodInfo">
+            <summary>
+            Method reflection object.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestMethod.#ctor">
+            <summary>
+            Private constructor, the constructor requires the method reflection object.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestMethod.#ctor(System.Reflection.MethodInfo)">
+            <summary>
+            Creates a new test method wrapper object.
+            </summary>
+            <param name="methodInfo">The reflected method.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestMethod.OnWriteLine(System.String)">
+            <summary>
+            Call the WriteLine method.
+            </summary>
+            <param name="s">String to WriteLine.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestMethod.DecorateInstance(System.Object)">
+            <summary>
+            Decorates a test class instance with the unit test framework's 
+            specific test context capability, if supported.
+            </summary>
+            <param name="instance">Instance to decorate.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestMethod.GetDynamicAttributes">
+            <summary>
+            Get any attribute on the test method that are provided dynamically.
+            </summary>
+            <returns>
+            Dynamically provided attributes on the test method.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestMethod.Invoke(System.Object)">
+            <summary>
+            Invoke the test method.
+            </summary>
+            <param name="instance">Instance of the test class.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestMethod.ToString">
+            <summary>
+            Exposes the name of the test method as a string.
+            </summary>
+            <returns>Returns the name of the test method.</returns>
+        </member>
+        <member name="E:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestMethod.WriteLine">
+            <summary>
+            Allows the test to perform a string WriteLine.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestMethod.Method">
+            <summary>
+            Gets the underlying reflected method.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestMethod.Ignore">
+            <summary>
+            Gets a value indicating whether there is an Ignore attribute.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestMethod.Description">
+            <summary>
+            Gets any description marked on the test method.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestMethod.Name">
+            <summary>
+            Gets the name of the method.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestMethod.Category">
+            <summary>
+            Gets the Category.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestMethod.Owner">
+            <summary>
+            Gets the owner name of the test.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestMethod.ExpectedException">
+            <summary>
+            Gets any expected exception attribute information for the test method.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestMethod.Timeout">
+            <summary>
+            Gets any timeout.  A Nullable property.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestMethod.Properties">
+            <summary>
+            Gets a Collection of test properties.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestMethod.WorkItems">
+            <summary>
+            Gets a collection of test work items.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestMethod.Priority">
+            <summary>
+            Gets Priority information.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestProperty">
+            <summary>
+            Represents a simple test property with a key/value string pair.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestProperty.#ctor">
+            <summary>
+            Initializes a new instance of the TestProperty class.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestProperty.#ctor(System.String,System.String)">
+            <summary>
+            Initializes a new instance of the TestProperty class.
+            </summary>
+            <param name="name">The initial property name.</param>
+            <param name="value">The initial property value.</param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestProperty.Name">
+            <summary>
+            Gets or sets the property name.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestProperty.Value">
+            <summary>
+            Gets or sets the property value.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.UnitTestContext">
+            <summary>
+            A wrapper for the unit test context capability of Visual Studio Team 
+            Test's unit test framework.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.UnitTestContext.#ctor(Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.TestMethod)">
+            <summary>
+            Create a new unit test context wrapper for the test method.
+            </summary>
+            <param name="testMethod">Test method.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.UnitTestContext.#ctor">
+            <summary>
+            Constructor of a new unit test context.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.UnitTestContext._tm">
+            <summary>
+            Test method.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.UnitTestContext.WriteLine(System.String,System.Object[])">
+            <summary>
+            Used to write trace messages while the test is running.
+            </summary>
+            <param name="format">Format string.</param>
+            <param name="args">The arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.UnitTestContext.NotSupportedException(System.String)">
+            <summary>
+            Throw a not supported exception.
+            </summary>
+            <param name="functionality">Functionality that is not supported (string).</param>
+            <returns>A new NotSupportedException.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.UnitTestContext.AddResultFile(System.String)">
+            <summary>
+            Adds a file name to the list in TestResult.ResultFileNames.
+            </summary>
+            <param name="fileName">Filename to add as a result.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.UnitTestContext.BeginTimer(System.String)">
+            <summary>
+            Begins a timer with the specified name.
+            </summary>
+            <param name="timerName">The name of the timer to create.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.UnitTestContext.EndTimer(System.String)">
+            <summary>
+            Ends a timer with the specified name.
+            </summary>
+            <param name="timerName">Name of the timer.</param>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.UnitTestContext._propertyCache">
+            <summary>
+            Cache of properties.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.UnitTestContext.Properties">
+            <summary>
+            Gets test properties.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.UnitTestContext.DataRow">
+            <summary>
+            Gets current data row when test is used for data driven testing.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.UnitTestContext.DataConnection">
+            <summary>
+            Gets current data connection row when test is used for data driven testing.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.UnitTestContext.TestName">
+            <summary>
+            Gets the name of the test method.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.UnitTestContext.CurrentTestOutcome">
+            <summary>
+            Gets the current enum outcome - passed, failed, or inconclusive.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.UnitTestFrameworkAssembly">
+            <summary>
+            Assembly metadata for the Visual Studio Team Test unit test framework.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.UnitTestFrameworkAssembly._assembly">
+            <summary>
+            Assembly reflection object.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.UnitTestFrameworkAssembly._init">
+            <summary>
+            Assembly initialization method information.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.UnitTestFrameworkAssembly._cleanup">
+            <summary>
+            Assembly cleanup method information.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.UnitTestFrameworkAssembly._provider">
+            <summary>
+            Unit test provider used for the assembly.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.UnitTestFrameworkAssembly._harness">
+            <summary>
+            The unit test harness.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.UnitTestFrameworkAssembly.#ctor(Microsoft.Silverlight.Testing.UnitTesting.Metadata.IUnitTestProvider,Microsoft.Silverlight.Testing.Harness.UnitTestHarness,System.Reflection.Assembly)">
+            <summary>
+            Creates a new unit test assembly wrapper.
+            </summary>
+            <param name="provider">Unit test metadata provider.</param>
+            <param name="unitTestHarness">A reference to the unit test harness.</param>
+            <param name="assembly">Assembly reflection object.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.UnitTestFrameworkAssembly.GetTestClasses">
+            <summary>
+            Reflect and retrieve the test class metadata wrappers for 
+            the test assembly.
+            </summary>
+            <returns>Returns a collection of test class metadata 
+            interface objects.</returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.UnitTestFrameworkAssembly.Name">
+            <summary>
+            Gets the name of the test assembly.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.UnitTestFrameworkAssembly.Provider">
+            <summary>
+            Gets the unit test provider instance.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.UnitTestFrameworkAssembly.AssemblyInitializeMethod">
+            <summary>
+            Gets any assembly initialize method.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.UnitTestFrameworkAssembly.AssemblyCleanupMethod">
+            <summary>
+            Gets any assembly cleanup method.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.UnitTestFrameworkAssembly.TestHarness">
+            <summary>
+            Gets the test harness used to initialize the assembly.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.UnitTestFrameworkAssembly.UnitTestHarness">
+            <summary>
+            Gets the test harness as a unit test harness.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.VsttProvider">
+            <summary>
+            Provider for the Visual Studio Team Test unit test (UT) framework 
+            metadata.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.VsttProvider.ProviderName">
+            <summary>
+            Name of this provider.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.VsttProvider.MyCapabilities">
+            <summary>
+            The capabilities of the VSTT UTF provider.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.VsttProvider.HasCapability(Microsoft.Silverlight.Testing.UnitTesting.Metadata.UnitTestProviderCapabilities)">
+            <summary>
+            Whether the capability is supported by this provider.
+            </summary>
+            <param name="capability">Capability type.</param>
+            <returns>A value indicating whether the capability is available.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.VsttProvider.#ctor">
+            <summary>
+            Create a new Visual Studio Team Test unit test framework provider 
+            instance.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.VsttProvider._assemblyCache">
+            <summary>
+            Cache of assemblies and assembly unit test interface objects.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.VsttProvider.GetUnitTestAssembly(Microsoft.Silverlight.Testing.Harness.UnitTestHarness,System.Reflection.Assembly)">
+            <summary>
+            VSTT unit test provider constructor; takes an assembly reference to 
+            perform reflection on to retrieve all test class types. In this 
+            implementation of an engine for the VSTT metadata, only a single 
+            test Assembly can be utilized at a time for simplicity.
+            </summary>
+            <param name="testHarness">The unit test harness.</param>
+            <param name="assemblyReference">Assembly reflection object.</param>
+            <returns>Returns the assembly metadata interface.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.VsttProvider.IsFailedAssert(System.Exception)">
+            <summary>
+            Check if the Exception is actually a failed assertion.
+            </summary>
+            <param name="exception">Exception object to check.</param>
+            <returns>True if the exception is actually an assert failure.</returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.VsttProvider.Name">
+            <summary>
+            Gets the name of the provider.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio.VsttProvider.Capabilities">
+            <summary>
+            Gets the specialized capability descriptor.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.UnitTestSettings">
+            <summary>
+            Settings for the unit test system.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTestSettings.TagExpressionKey">
+            <summary>
+            The tag expression key name.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTestSettings.DefaultSortTestMethods">
+            <summary>
+            By default test methods are sorted.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTestSettings.DefaultSortTestClasses">
+            <summary>
+            By default test classes are sorted.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTestSettings.#ctor">
+            <summary>
+            Settings for the unit test system.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTestSettings.Parameters">
+            <summary>
+            Gets the parameters from the response file.
+            </summary>
+            <value>The parameters.</value>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTestSettings.Components">
+            <summary>
+            Gets the components initialized by the entry-point assembly. These
+            are the dynamically loaded objects that may be needed by the
+            TestHarness.
+            </summary>
+            <value>The components.</value>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTestSettings.LogProviders">
+            <summary>
+            Gets the log providers.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTestSettings.SampleTags">
+            <summary>
+            Gets or sets a set of sample tags for use in a tag editor screen.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTestSettings.TestAssemblies">
+            <summary>
+            Gets the list of test assemblies.
+            </summary>
+            <value>The test assembly.</value>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTestSettings.TestService">
+            <summary>
+            Gets or sets the test service provider.  The test service lights up 
+            advanced out-of-process communication, reporting, logging, and 
+            other valuable services.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTestSettings.TestHarness">
+            <summary>
+            Gets or sets the test harness.
+            </summary>
+            <value>The test harness.</value>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTestSettings.TestServiceHostname">
+            <summary>
+            Gets or sets the test service hostname to try using. Defaults to
+            localhost.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTestSettings.TestServicePort">
+            <summary>
+            Gets or sets the test service port to try using. Defaults to 8000.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTestSettings.TestServicePath">
+            <summary>
+            Gets or sets the test service path to try using. Defaults to
+            /externalInterface/.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTestSettings.StartRunImmediately">
+            <summary>
+            Gets or sets a value indicating whether to start the run
+            immediately when the test system is run. Defaults to false to enable
+            the test service to load and information to be provided in the
+            user interface.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTestSettings.TestPanelType">
+            <summary>
+            Gets or sets the type of the TestPanel to create. The type must
+            derive from Microsoft.Silverlight.Testing.ITestPanel.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTestSettings.SortTestMethods">
+            <summary>
+            Gets or sets a value indicating whether test methods are sorted 
+            alphabetically. By default this value is true.
+            </summary>
+            <remarks>
+            It is worth understanding that the order of unit test 
+            execution should not affect the results of a test run.  Any expected
+            ordering and verification from multiple test methods should be 
+            refactored into a single unit test.
+            </remarks>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTestSettings.SortTestClasses">
+            <summary>
+            Gets or sets a value indicating whether test classes are sorted 
+            alphabetically. This setting is True by default.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTestSettings.ShowTagExpressionEditor">
+            <summary>
+            Gets or sets a value indicating whether to show the tag expression
+            editor user interface before starting the test run.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTestSettings.TagExpression">
+            <summary>
+            Gets or sets the tag expression used for selecting tests to run. 
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTestSettings.TestClassesToRun">
+            <summary>
+            Gets a list of test classes to run. Enables filtering.
+            </summary>
+            <remarks>This property should be considered obsolete.</remarks>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.TestPanelManager">
+            <summary>
+            A manager for the underlying TestSurface Panel.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestPanelManager.#ctor">
+            <summary>
+            Private constructor.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestPanelManager._testPage">
+            <summary>
+            The test page object.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestPanelManager._dirty">
+            <summary>
+            A value indicating whether the panel is dirty.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestPanelManager.ClearUsedChildren">
+            <summary>
+            Remove the children from the test surface, if it has 
+            been used.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestPanelManager.ClearChildren">
+            <summary>
+            Remove the children from the test surface.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.TestPanelManager.TestPage">
+            <summary>
+            Gets or sets the Reference to the TestPage user control.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.TestPanelManager.TestPanel">
+            <summary>
+            Gets the TestSurface Panel, and tracks the use for the 
+            current test method.  When the test completes, the panel children 
+            will be cleared automatically.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.ScenarioResult">
+            <summary>
+            A result from a test scenario.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.ScenarioResult.#ctor(Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod,Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass,Microsoft.Silverlight.Testing.Harness.TestOutcome,System.Exception)">
+            <summary>
+            Creates a result record.
+            </summary>
+            <param name="method">Test method metadata object.</param>
+            <param name="testClass">Test class metadata object.</param>
+            <param name="result">Test result object.</param>
+            <param name="exception">Exception instance, if any.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.ScenarioResult.ToString">
+            <summary>
+            The string representation of the ScenarioResult.
+            </summary>
+            <returns>Returns a verbose string representation of the result.</returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.ScenarioResult.Started">
+            <summary>
+            Gets or sets the scenario's started time.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.ScenarioResult.Finished">
+            <summary>
+            Gets or sets the scenario's finishing time.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.ScenarioResult.TestMethod">
+            <summary>
+            Gets the test method metadata.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.ScenarioResult.TestClass">
+            <summary>
+            Gets the test class metadata.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.ScenarioResult.Result">
+            <summary>
+            Gets or sets the Result object.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.ScenarioResult.Exception">
+            <summary>
+            Gets the Exception instance, if any.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.AssemblyManager">
+            <summary>
+            Container and manager type which handles an entire test assembly; contains sub work 
+            items that represent all actions needed to execute its tests.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.UnitTestCompositeWorkItem">
+            <summary>
+            A container that stores instances of the unit test harness and provider.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.CompositeWorkItem">
+            <summary>
+            TestWorkItem which can contain sub-tasks; the underlying work item is 
+            not marked complete until the Children have completed or an Exception 
+            is thrown.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.CompositeWorkItem._children">
+            <summary>
+            Store the underlying tasks.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.CompositeWorkItem._finishWhenEmpty">
+            <summary>
+            Whether the TestTaskContainer::IsComplete should be set to true 
+            after all children have been de-queued.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.CompositeWorkItem._invoked">
+            <summary>
+            Whether the first invoke has happened yet or not.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.CompositeWorkItem.#ctor">
+            <summary>
+            Constructor for the TestTaskContainer type.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.CompositeWorkItem.FirstInvoke">
+            <summary>
+            Optional method to call on the first invoke.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.CompositeWorkItem.Invoke">
+            <summary>
+            Invoke the test container; in turn will execute child work items 
+            as needed. Supports executing multiple items immediately for
+            performance reasons.
+            </summary>
+            <returns>True if additional work remains, False once IsComplete 
+            is set to true.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.CompositeWorkItem.Invoke(Microsoft.Silverlight.Testing.WorkItem@)">
+            <summary>
+            Invoke the test container; in turn will execute child work items 
+            as needed.
+            </summary>
+            <param name="usedWorkItem">The work item used for the invoke.</param>
+            <returns>True if additional work remains, False once IsComplete 
+            is set to true.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.CompositeWorkItem.ClearChildren">
+            <summary>
+            Clear the children.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.CompositeWorkItem.Dequeue">
+            <summary>
+            Dequeue a work item.
+            </summary>
+            <returns>A work item.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.CompositeWorkItem.Enqueue(Microsoft.Silverlight.Testing.WorkItem)">
+            <summary>
+            Add a new work item to the container to schedule it for invocation.
+            </summary>
+            <param name="item">New test work item to enqueue.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.CompositeWorkItem.EnqueueQuick(Microsoft.Silverlight.Testing.WorkItem)">
+            <summary>
+            Adds a new work item that will execute more quickly.
+            </summary>
+            <param name="item">The item of work.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.CompositeWorkItem.EnqueueQuick(System.Action)">
+            <summary>
+            Enqueues a callback or action that will quickly execute.
+            </summary>
+            <param name="action">The action or method.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.CompositeWorkItem.Enqueue(System.Action)">
+            <summary>
+            Add a new callback action and schedule it for invocation.
+            </summary>
+            <param name="action">The action.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.CompositeWorkItem.Peek">
+            <summary>
+            Return the top work item, if any, from this container.
+            </summary>
+            <returns>Peek into any test work item.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.CompositeWorkItem.WorkItemComplete">
+            <summary>
+            Work items must call this method to indicate completion of the work 
+            item; in turn fires the Complete event delegates.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.CompositeWorkItem.WorkItemCompleteInternal">
+            <summary>
+            Internal-only version which can be called during a test completion 
+            through the relation - not necessarily the best design; events 
+            may make more sense long-term.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.CompositeWorkItem.WorkItemException(System.Exception)">
+            <summary>
+            Call when an exception occurs inside a work item.
+            </summary>
+            <param name="e">Exception object.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.CompositeWorkItem.OnComplete(System.EventArgs)">
+            <summary>
+            Fire the Complete event.
+            </summary>
+            <param name="e">Empty event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.CompositeWorkItem.OnUnhandledException(System.Exception)">
+            <summary>
+            Fire the unhandled exception event.
+            </summary>
+            <param name="exception">Exception object.</param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.CompositeWorkItem.FinishWhenEmpty">
+            <summary>
+            Gets a value indicating whether the container is marked Complete 
+            when all children have executed or not.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.CompositeWorkItem.RemainingWork">
+            <summary>
+            Gets a value indicating whether sub tasks remain.
+            </summary>
+        </member>
+        <member name="E:Microsoft.Silverlight.Testing.Harness.CompositeWorkItem.Complete">
+            <summary>
+            Complete event is fired when the underlying WorkItemComplete method 
+            is called by the work item.
+            </summary>
+        </member>
+        <member name="E:Microsoft.Silverlight.Testing.Harness.CompositeWorkItem.UnhandledException">
+            <summary>
+            Event fired when an exception is thrown and unhandled within the 
+            underlying Invoke sequence.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.CompositeWorkItem.CanExecuteImmediately">
+            <summary>
+            Gets or sets a value indicating whether the task can execute
+            immediately.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.UnitTestCompositeWorkItem._provider">
+            <summary>
+            The unit test provider.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestCompositeWorkItem.#ctor(Microsoft.Silverlight.Testing.Harness.UnitTestHarness,Microsoft.Silverlight.Testing.UnitTesting.Metadata.IUnitTestProvider)">
+            <summary>
+            Initializes a new unit test work item container.
+            </summary>
+            <param name="testHarness">The unit test harness.</param>
+            <param name="unitTestProvider">The unit test metadata provider.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestCompositeWorkItem.LogMessage(Microsoft.Silverlight.Testing.Harness.LogMessage)">
+            <summary>
+            Logs a new message.
+            </summary>
+            <param name="message">Message object.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestCompositeWorkItem.LogMessage(System.String)">
+            <summary>
+            Logs a message about the harness.
+            </summary>
+            <param name="harnessInformation">Information about the harness.</param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.UnitTestCompositeWorkItem.LogWriter">
+            <summary>
+            Gets the log message writer for the unit test system.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.UnitTestCompositeWorkItem.TestHarness">
+            <summary>
+            Gets the test harness instance.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.UnitTestCompositeWorkItem.Provider">
+            <summary>
+            Gets the unit test provider instance.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.AssemblyManager._filter">
+            <summary>
+            The test run filter object.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.AssemblyManager._assembly">
+            <summary>
+            Unit test provider-agnostic assembly metadata.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.AssemblyManager._testClasses">
+            <summary>
+            Container of work items for running test classes.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.AssemblyManager.#ctor(Microsoft.Silverlight.Testing.Harness.TestRunFilter,Microsoft.Silverlight.Testing.Harness.UnitTestHarness,Microsoft.Silverlight.Testing.UnitTesting.Metadata.IUnitTestProvider,Microsoft.Silverlight.Testing.UnitTesting.Metadata.IAssembly)">
+            <summary>
+            Create a new assembly manager, takes in the harness, provider 
+            reference and actual IAssembly object.
+            </summary>
+            <param name="runFilter">The test run filter object.</param>
+            <param name="testHarness">Harness object.</param>
+            <param name="provider">The unit test metadata provider.</param>
+            <param name="testAssembly">The test assembly metadata object.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.AssemblyManager.FirstInvoke">
+            <summary>
+            When the test run is ready to test the underlying test assembly that
+            this class manages, perform reflection and enqueue work items to run
+            the tests.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.AssemblyManager.EnqueueAssemblyInitialize">
+            <summary>
+            The assembly initialize method.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.AssemblyManager.EnqueueAssemblyCleanup">
+            <summary>
+            The assembly cleanup method.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.AssemblyManager.EnqueueTestClasses">
+            <summary>
+            Reflect over all test classes in the assembly and add any which are not 
+            filtered out into the test work item queue.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.AssemblyManager.EnqueueMethodDispatcher(System.Reflection.MethodInfo)">
+            <summary>
+            Helper to enqueue a new method dispatcher.
+            </summary>
+            <param name="method">The method reflection object.</param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.AssemblyManager.ClassInstances">
+            <summary>
+            Gets the collection of all the instances of the assembly's test
+            classes, used to keep a single reference of the type.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.MethodContainer">
+            <summary>
+            A method container.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.MethodContainer._timeout">
+            <summary>
+            The timeout time.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.MethodContainer._method">
+            <summary>
+            The test method metadata.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.MethodContainer.#ctor">
+            <summary>
+            Constructs a new method container.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.MethodContainer.#ctor(System.Object,System.Reflection.MethodInfo,Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod)">
+            <summary>
+            Constructs a new method container.
+            </summary>
+            <param name="instance">An instance of the method's type.</param>
+            <param name="method">The method reflection object.</param>
+            <param name="testMethod">The test method.</param>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.MethodContainer._methodTask">
+            <summary>
+            The task that involves the method, and contains its own internal 
+            test queue, if needed for asynchronous tasks.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.MethodContainer._methodInfo">
+            <summary>
+            The reflection object for the method.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.MethodContainer.Invoke">
+            <summary>
+            Invoke into the method.
+            </summary>
+            <returns>Returns the condition of any remaining work.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.MethodContainer.FirstInvoke">
+            <summary>
+            On the first invoke, make sure there's a task to call the method.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.MethodContainer.MethodInfo">
+            <summary>
+            Gets the method's reflection object.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.TestClassInstanceDictionary">
+            <summary>
+            A dictionary that manages single instances of types for use across the 
+            unit test system.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestClassInstanceDictionary.GetInstance(System.Type)">
+            <summary>
+            Returns the instance for a Type; if there is not an instance yet, 
+            this will use Activator.CreateInstance to create it.
+            </summary>
+            <param name="type">The Type instance to retrieve.</param>
+            <returns>Returns an instance of the Type.  Returns a new instance 
+            if the Type has not yet been used.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestClassInstanceDictionary.ClearInstance(System.Type)">
+            <summary>
+            Remove any instance for the type.
+            </summary>
+            <param name="type">The Type of instance to remove.</param>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.TestClassManager">
+            <summary>
+            Test class manager.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestClassManager._filter">
+            <summary>
+            Test run filter object.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestClassManager._testClass">
+            <summary>
+            Reference to the class and its metadata.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestClassManager._testExecutionQueue">
+            <summary>
+            Queue of any tests to run.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestClassManager._instance">
+            <summary>
+            Class instance.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestClassManager.#ctor(Microsoft.Silverlight.Testing.Harness.TestRunFilter,Microsoft.Silverlight.Testing.Harness.UnitTestHarness,Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass,System.Object,Microsoft.Silverlight.Testing.UnitTesting.Metadata.IUnitTestProvider)">
+            <summary>
+            A container type that handles an entire test class throughout the 
+            test run.
+            </summary>
+            <param name="filter">Test run filter object.</param>
+            <param name="testHarness">The unit test harness.</param>
+            <param name="testClass">The test class metadata interface.</param>
+            <param name="instance">The object instance.</param>
+            <param name="provider">The unit test provider.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestClassManager.FirstInvoke">
+            <summary>
+            Code run the first time this container is invoked.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestClassManager.PrepareInstance">
+            <summary>
+            Custom tests need to be prepared before use.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestClassManager.EnqueueTestClassInitialize">
+            <summary>
+            The test initialize method.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestClassManager.EnqueueTestClassCleanup">
+            <summary>
+            The test cleanup method.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestClassManager.PopulateTestMethods">
+            <summary>
+            Reflect through the class to find any test methods, and add them to 
+            the list of queued methods.  Also, sorts the methods if appropriate 
+            based on the settings file.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestClassManager.EnqueueMethodDispatcher(System.Reflection.MethodInfo)">
+            <summary>
+            Add a new method dispatcher to the test work item queue.  This is a 
+            work item container which is able to manage its own internal test 
+            work item queue.
+            </summary>
+            <param name="method">The method reflection object.</param>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.WorkItemsManager">
+            <summary>
+            A special type dedicated to keeping a running stack of the dispatch 
+            managers that are actually enabled for "work item" use.  The current 
+            dispatcher is used by the test work item queue.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.WorkItemsManager._stack">
+            <summary>
+            Dispatcher stack; a stack of work item containers.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.WorkItemsManager.#ctor">
+            <summary>
+            Creates a new empty stack for work item containers.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.WorkItemsManager.Push(Microsoft.Silverlight.Testing.Harness.CompositeWorkItem)">
+            <summary>
+            Push a new dispatcher onto the stack.
+            </summary>
+            <param name="composite">The composite work item to push.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.WorkItemsManager.Pop">
+            <summary>
+            Pop a dispatcher off the stack.
+            </summary>
+            <returns>Returns the top-most container.  Throws an 
+            InvalidOperationException if none is available.</returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.WorkItemsManager.CurrentCompositeWorkItem">
+            <summary>
+            Gets the current test work item dispatcher, which is the dispatcher 
+            on the top of the stack.  Returns null if there is none.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.TestMethodManager">
+            <summary>
+            Manager for planning, processing, and reporting the result of a single 
+            test method for a unit test provider.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestMethodManager._testClass">
+            <summary>
+            Underlying test class object.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestMethodManager._testMethod">
+            <summary>
+            Underlying test method object.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestMethodManager._instance">
+            <summary>
+            Reference to an instance of the test class.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestMethodManager._result">
+            <summary>
+            Scenario result of the test method.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestMethodManager._started">
+            <summary>
+            The started time of execution.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestMethodManager._output">
+            <summary>
+            Stores a collection of written lines.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestMethodManager._bugAttributePresent">
+            <summary>
+            A value indicating whether the bug attribute was present on this 
+            method.  If it is, the result will be inverted at completion.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestMethodManager._mainTestMethodContainer">
+            <summary>
+            Contains the main test contents.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestMethodManager.#ctor(Microsoft.Silverlight.Testing.Harness.UnitTestHarness,Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestClass,Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod,System.Object,Microsoft.Silverlight.Testing.UnitTesting.Metadata.IUnitTestProvider)">
+            <summary>
+            Constructor for a test method manager, which handles executing a single test method 
+            for a unit test provider.
+            </summary>
+            <param name="testHarness">The unit test harness object.</param>
+            <param name="testClass">The test class metadata object.</param>
+            <param name="testMethod">The test method metadata object.</param>
+            <param name="instance">The test class instance.</param>
+            <param name="provider">The unit test provider.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestMethodManager.LogStartMessage">
+            <summary>
+            Log a start message.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestMethodManager.LogEndMessage">
+            <summary>
+            Log an end message.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestMethodManager.OnWriteLine(Microsoft.Silverlight.Testing.UnitTesting.Metadata.StringEventArgs)">
+            <summary>
+            Handles the write line event for the test method.
+            </summary>
+            <param name="e">The string event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestMethodManager.FirstInvoke">
+            <summary>
+            First invoke, plan for the method's execution.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestMethodManager.SetResultTimes">
+            <summary>
+            Sets the start and finish times on the ScenarioResult object.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestMethodManager.CreateNewResult(Microsoft.Silverlight.Testing.Harness.TestOutcome)">
+            <summary>
+            Creates the ScenarioResult instance for this test method.
+            </summary>
+            <param name="outcome">The initial test outcome value.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestMethodManager.CompleteMethod(System.Object,System.EventArgs)">
+            <summary>
+            Process the result.
+            </summary>
+            <param name="sender">Source object.</param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestMethodManager.UnhandledMethodException(System.Object,System.UnhandledExceptionEventArgs)">
+            <summary>
+            Process an unhandled exception for the method.
+            </summary>
+            <param name="sender">Source object.</param>
+            <param name="e">Unhandled exception event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestMethodManager.EnqueueMethodDispatcher(System.Reflection.MethodInfo)">
+            <summary>
+            Create a new method container to enclose a reflected method for execution.
+            </summary>
+            <param name="method">The method reflection object.</param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.TestMethodManager.BugAttributeProcessed">
+            <summary>
+            Gets or sets a value indicating whether the bug attribute's logic
+            has already been processed.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.TestMethodManager.WriteLineOutput">
+            <summary>
+            Gets the write line output list.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.UnitTestMethodContainer">
+            <summary>
+            A container which is able to attach to the underlying test dispatcher 
+            stack to enable advanced asynchronous functionality, when supported.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.UnitTestMethodContainer._harness">
+            <summary>
+            The unit test harness.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.UnitTestMethodContainer._granularity">
+            <summary>
+            The granularity of the contained item.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.UnitTestMethodContainer._testMethod">
+            <summary>
+            The test method metadata object.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestMethodContainer.#ctor(Microsoft.Silverlight.Testing.Harness.UnitTestHarness,System.Object,System.Reflection.MethodInfo,Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod,Microsoft.Silverlight.Testing.Harness.TestGranularity)">
+            <summary>
+            Initializes dispatcher-stack attaching method container work item.
+            </summary>
+            <param name="testHarness">Test harness.</param>
+            <param name="instance">Test instance.</param>
+            <param name="method">Method reflection object.</param>
+            <param name="testMethod">Test method metadata.</param>
+            <param name="granularity">Granularity of test.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestMethodContainer.FirstInvoke">
+            <summary>
+            Connect to dispatcher stack for advanced functions, if supported.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.UnitTestMethodContainer.SupportsWorkItemQueue">
+            <summary>
+            Check a MethodInfo for the advanced async attribute.
+            </summary>
+            <returns>True if the work item queue is supported.</returns>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.CallbackWorkItem">
+            <summary>
+            A work item for tests to use which will call the delegate when the work 
+            item is executed.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.CallbackWorkItem._action">
+            <summary>
+            Stored void delegate.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.CallbackWorkItem.#ctor(System.Action)">
+            <summary>
+            Create a new Callback work item.
+            </summary>
+            <param name="callback">Action to execute on Invoke.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.CallbackWorkItem.Invoke">
+            <summary>
+            Execute the callback.
+            </summary>
+            <returns>Whether the work item is complete.</returns>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.ConditionalWorkItem">
+            <summary>
+            A test work item that is complete once the condition is asserted.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.ConditionalWorkItem._delegate">
+            <summary>
+            The conditional delegate.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.ConditionalWorkItem.#ctor(System.Func{System.Boolean})">
+            <summary>
+            Construct a new conditional work item.
+            </summary>
+            <param name="conditionalMethod">Conditional delegate.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.ConditionalWorkItem.Invoke">
+            <summary>
+            Invoke the condition, will continue invoking until 
+            the condition is false.
+            </summary>
+            <returns>Completes the invocation once the condition is true.</returns>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.MethodInvokeWorkItem">
+            <summary>
+            A simple work item that invokes a method through the reflection 
+            MethodInfo instance.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.MethodInvokeWorkItem.None">
+            <summary>
+            An empty object array.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.MethodInvokeWorkItem._instance">
+            <summary>
+            An object instance.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.MethodInvokeWorkItem._method">
+            <summary>
+            Method reflection object.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.MethodInvokeWorkItem._testMethod">
+            <summary>
+            The test method to invoke.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.MethodInvokeWorkItem.#ctor(System.Object,System.Reflection.MethodInfo,Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod)">
+            <summary>
+            Creates a new method invoke work item for a MethodInfo instance.
+            </summary>
+            <param name="instance">The type instance.</param>
+            <param name="method">The method on the type to invoke when the 
+            work item is executed.</param>
+            <param name="testMethod">The test method metadata.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.MethodInvokeWorkItem.Invoke">
+            <summary>
+            Invokes the underlying method on the instance and marks the 
+            test work item as complete.
+            </summary>
+            <returns>False, noting the completion of the work item.</returns>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.UnitTesting.Metadata.UnitTestProviders">
+            <summary>
+            Unit test providers.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.UnitTesting.Metadata.UnitTestProviders._providers">
+            <summary>
+            List of unit test providers.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.UnitTestProviders.#cctor">
+            <summary>
+            Static constructor that initializes the built-in unit test metadata providers.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.UnitTestProviders.GetAssemblyProvider(Microsoft.Silverlight.Testing.Harness.UnitTestHarness,System.Reflection.Assembly)">
+            <summary>
+            Gets the unit test provider for an assembly.  The framework only 
+            currently supports a single provider per test assembly, so if more 
+            than one registered provider can handle the assembly, at runtime an 
+            InvalidOperationException is thrown.
+            </summary>
+            <param name="harness">The test harness making the request.</param>
+            <param name="testAssembly">Assembly reflection object.</param>
+            <returns>The unit test provider for the test assembly.  Throws if 
+            more than one can process the assembly.  Returns null if there is 
+            not a provider for the assembly.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.UnitTesting.Metadata.UnitTestProviders.GetAssemblyWrapper(Microsoft.Silverlight.Testing.Harness.UnitTestHarness,System.Reflection.Assembly)">
+            <summary>
+            Returns the IAssembly provider for an assembly.
+            </summary>
+            <param name="harness">Test harness object.</param>
+            <param name="testAssembly">Assembly reflection object.</param>
+            <returns>Returns null or an IAssembly instance.</returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.UnitTesting.Metadata.UnitTestProviders.Providers">
+            <summary>
+            Gets the list of Unit Test providers.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.DecoratorDictionary">
+            <summary>
+            A dictionary that can store just about any kind of object, keyed off any
+            object.  As a Hashtable, it permits using keys of 
+            - enums
+            - objects
+            - types
+            
+            This makes it ideal for use in decorating and adorning special types in
+            the system, such as log messages.
+            
+            A strongly-typed decorator key could come from an enum value, while a
+            prototype extension to the test system could simply use a string key for
+            organizing.  
+            
+            In all instances, the resulting object needs to be cast appropriately.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.DecoratorDictionary.HasDecorator(System.Object)">
+            <summary>
+            Check if a decorator exists.
+            </summary>
+            <param name="decoratorKey">The decorator key object.</param>
+            <returns>
+            Returns a value indicating whether the decorator key exists.  Even
+            if the key exists, the instance value for the key could be set to
+            null, yielding a null instance.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.DecoratorDictionary.HasDecorators(System.Object[])">
+            <summary>
+            Check if a set of decorators exists.
+            </summary>
+            <param name="decorators">The set of decorator(s) of interest.</param>
+            <returns>
+            Returns a value indicating whether the decorators of interest were
+            present.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.DecoratorDictionary.GetDecorator(System.Object)">
+            <summary>
+            Retrieves the decorator instance if it exists.  If not, this method
+            returns null.
+            </summary>
+            <param name="decoratorKey">The decorator key object.</param>
+            <returns>
+            Returns the instance or null if it does not exist.  No exceptions
+            are thrown in this method.
+            </returns>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.ResourceUtility">
+            <summary>
+            Helper functionality for dealing with embedded resources in an assembly.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.ResourceUtility.GetAllText(System.Object,System.String)">
+            <summary>
+            Get a string containing the text of an embedded resource in an
+            assembly.
+            </summary>
+            <param name="instance">
+            An instance whose assembly can be retrieved through reflection.
+            </param>
+            <param name="fullEmbeddedResourceName">
+            Complete embedded resource name.
+            </param>
+            <returns>
+            A string containing the embedded resource's string contents.
+            </returns>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.LogMessageFactory">
+            <summary>
+            A simple factory used for creating new log messages.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessageFactory.Create">
+            <summary>
+            Create a new LogMessage instance.
+            </summary>
+            <returns>Returns a new LogMessage instance.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessageFactory.Create(Microsoft.Silverlight.Testing.Harness.LogMessageType)">
+            <summary>
+            Create a new LogMessage instance.
+            </summary>
+            <param name="messageType">The type of message to create.</param>
+            <returns>Returns a new LogMessage instance.</returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.LogMessageFactory.DefaultLogMessageType">
+            <summary>
+            Gets or sets the default log message type used for the creation of
+            unspecific log message types.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.LogDecorator">
+            <summary>
+            Well-known keys that can be used to mark decorator instances in log 
+            message objects.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.LogDecorator.ExceptionObject">
+            <summary>
+            Key for a decorator that is a simple Exception object.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.LogDecorator.NameProperty">
+            <summary>
+            Key for a decorator that is a simple Name string property.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.LogDecorator.TestOutcome">
+            <summary>
+            An associated TestOutcome value.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.LogDecorator.TestStage">
+            <summary>
+            The stage of a message or event.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.LogDecorator.TestGranularity">
+            <summary>
+            The granularity of a message or event.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.TestOutcome">
+            <summary>
+            A number of possible test outcomes or results.  For compatibility, this 
+            information resembles that of the desktop test framework, although many 
+            of the states may not apply or be valid for an in-browser test harness.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestOutcome.Error">
+            <summary>
+            A test outcome of Error.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestOutcome.Failed">
+            <summary>
+            A test outcome of Failed.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestOutcome.Timeout">
+            <summary>
+            A test outcome of Timeout.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestOutcome.Aborted">
+            <summary>
+            A test outcome of Aborted.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestOutcome.Inconclusive">
+            <summary>
+            A test outcome of Inconclusive.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestOutcome.PassedButRunAborted">
+            <summary>
+            A test outcome of a run that was aborted, but passed.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestOutcome.NotRunnable">
+            <summary>
+            A test outcome of NotRunnable.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestOutcome.NotExecuted">
+            <summary>
+            A test outcome of NotExecuted.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestOutcome.Disconnected">
+            <summary>
+            A test outcome of Disconnected.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestOutcome.Warning">
+            <summary>
+            A test outcome of Warning.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestOutcome.Passed">
+            <summary>
+            A test outcome of Passed.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestOutcome.Completed">
+            <summary>
+            A test outcome of Completed.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestOutcome.InProgress">
+            <summary>
+            A test outcome of InProgress.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestOutcome.Pending">
+            <summary>
+            A test outcome of Pending.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.TestStage">
+            <summary>
+            The stage of a test scenario, case or system running.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestStage.Starting">
+            <summary>
+            In the process of starting.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestStage.Running">
+            <summary>
+            Currently running.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestStage.Finishing">
+            <summary>
+            Finishing up.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestStage.Canceling">
+            <summary>
+            The test is canceling.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.GlobalExceptionHandler">
+            <summary>
+            Provides a property that will attach and detach a known event handler
+            delegate when the bit is flipped.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.GlobalExceptionHandler._eventHandler">
+            <summary>
+            The event to fire when attached.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.GlobalExceptionHandler._attached">
+            <summary>
+            Whether the event handler is attached as a global unhandled
+            exception handler.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.GlobalExceptionHandler.#ctor(System.EventHandler)">
+            <summary>
+            Creates a new exception handler "manager" with the provided
+            EventHandler.
+            </summary>
+            <param name="eventHandler">The event handler to manage.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.GlobalExceptionHandler.ChangeExceptionBubbling(System.EventArgs,System.Boolean)">
+            <summary>
+            Mark the Handled property in the event args as True to stop any 
+            event bubbling.
+            </summary>
+            <param name="e">Event arguments.</param>
+            <param name="exceptionHandled">
+            Value indicating whether the Exception should be marked as handled.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.GlobalExceptionHandler.GetExceptionObject(System.EventArgs)">
+            <summary>
+            Return the Exception property from the EventArgs.
+            </summary>
+            <param name="e">Event arguments.</param>
+            <returns>
+            Returns the Exception object that the event arguments stores.
+            </returns>
+            <remarks>
+            This method is compatible with the full desktop framework as well as
+            Silverlight.
+            </remarks>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.GlobalExceptionHandler.OnGlobalException(System.Object,System.Windows.ApplicationUnhandledExceptionEventArgs)">
+            <summary>
+            Internal event that is hooked up to the global exception handler.
+            </summary>
+            <param name="sender">Source object of the event.</param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.GlobalExceptionHandler.UpdateAttachment">
+            <summary>
+            Called after a change to the attachment field value.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.GlobalExceptionHandler.AttachHandler">
+            <summary>
+            Attach the handler globally.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.GlobalExceptionHandler.DetachHandler">
+            <summary>
+            Detach the handler globally.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.GlobalExceptionHandler.AttachGlobalHandler">
+            <summary>
+            Gets or sets a value indicating whether the handler is currently 
+            attached to the global exception handler.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.LogMessage">
+            <summary>
+            A log message.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.LogMessage.DefaultLogMessageType">
+            <summary>
+            The default log message used during initialization.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessage.#ctor">
+            <summary>
+            Initializes a new log message of the default message type.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessage.#ctor(Microsoft.Silverlight.Testing.Harness.LogMessageType)">
+            <summary>
+            Initializes a new log message.
+            </summary>
+            <param name="messageType">The message type.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessage.ToString">
+            <summary>
+            Converts to string representation.
+            </summary>
+            <returns>A string version of the LogMessage.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessage.HasDecorator(System.Object)">
+            <summary>
+            Check if a decorator is present on the LogMessage.
+            </summary>
+            <param name="decorator">The decorator of interest.</param>
+            <returns>
+            Returns a value indicating whether the decorator is present in the
+            DecoratorDictionary.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.LogMessage.HasDecorators(System.Object[])">
+            <summary>
+            Check if a set of decorators are present.
+            </summary>
+            <param name="decorators">The decorator(s) of interest.</param>
+            <returns>
+            Returns a value indicating whether the decorator(s) of interest are
+            present.
+            </returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.LogMessage.Decorators">
+            <summary>
+            Gets the set of decorator instances attached to the log message.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.LogMessage.MessageType">
+            <summary>
+            Gets or sets the type of message.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.LogMessage.Message">
+            <summary>
+            Gets or sets the log's message.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.LogMessage.Item(System.Object)">
+            <summary>
+            Gets or sets the decorator type for the message.
+            </summary>
+            <param name="decorator">
+            The type of decorator.  Only one explicit Type is permitted,
+            although multiple types within the same type hierarchy are
+            legitimate.
+            </param>
+            <returns>Returns the instance of the decorator, if any.</returns>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.TestGranularity">
+            <summary>
+            The hierarchy of test execution represented in more generic terms, this
+            allows for more robust and useful actions by log providers.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestGranularity.Harness">
+            <summary>
+            Harness-level granularity.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestGranularity.TestGroup">
+            <summary>
+            Group of test-level granularity.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestGranularity.Test">
+            <summary>
+            Test-level granularity.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.TestGranularity.TestScenario">
+            <summary>
+            Scenario-level granularity.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.DebugOutputProvider">
+            <summary>
+            The most verbose log provider, this calls .ToString() on each and every 
+            LogMessage that it processes.  The output will appear in an attached 
+            debugger's "Output" window.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.DebugOutputProvider.#ctor">
+            <summary>
+            Initializes a new instance of the DebugOutputProvider class.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.DebugOutputProvider.Process(Microsoft.Silverlight.Testing.Harness.LogMessage)">
+            <summary>
+            Display a LogMessage in the debug output window.
+            </summary>
+            <param name="logMessage">Message object.</param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.DebugOutputProvider.ShowAllFailures">
+            <summary>
+            Gets or sets a value indicating whether any TestResult failures will 
+            be reported, regardless of whether the TestResult type is being 
+            monitored for debug output.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.DebugOutputProvider.ShowEverything">
+            <summary>
+            Gets or sets a value indicating whether all messages appear in the 
+            debug output.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.LogMessageType">
+            <summary>
+            Set of defined types of log messages to allow for some level of 
+            filtering and selective processing of log messages.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.LogMessageType.TestResult">
+            <summary>
+            Pass, fail, etc.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.LogMessageType.Debug">
+            <summary>
+            Debug::WriteLine or tracing.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.LogMessageType.Warning">
+            <summary>
+            Non-fatal log message.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.LogMessageType.Error">
+            <summary>
+            Fatal error message.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.LogMessageType.KnownIssue">
+            <summary>
+            Information about a known defect.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.LogMessageType.Information">
+            <summary>
+            General information similar to a Console::WriteLine.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.LogMessageType.Environment">
+            <summary>
+            Operating system setting or platform values.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.LogMessageType.TestExecution">
+            <summary>
+            New unit of test or test run note.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.LogMessageType.TestInfrastructure">
+            <summary>
+            Related test systems or out-of-process communication information.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.TestHarnessCompletedEventArgs">
+            <summary>
+            Event information marking the completion of a test run.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestHarnessCompletedEventArgs.#ctor(Microsoft.Silverlight.Testing.Harness.TestHarnessState)">
+            <summary>
+            Creates a new TestHarnessCompletedEventArgs.
+            </summary>
+            <param name="testHarnessState">The final test harness state.</param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.TestHarnessCompletedEventArgs.State">
+            <summary>
+            Gets the final test harness state.
+            
+            This contains the final pass versus fail result at a minimum.
+            Specific harnesses may extend the type to contain additional
+            information, logs, scenario counts, or anything else.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.WebBrowserTick">
+            <summary>
+            A type which handles preparing the underlying dispatcher or timer from 
+            which the test work items execute.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.WebBrowserTick.DefaultTickInterval">
+            <summary>
+            Millisecond interval to use for the interval between DispatcherTimer
+            ticks.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Harness.WebBrowserTick._timer">
+            <summary>
+            Dispatcher timer.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.WebBrowserTick.#ctor(System.Func{System.Boolean})">
+            <summary>
+            Creates a new run method manager using the default value for the 
+            timer's millisecond interval.
+            </summary>
+            <param name="runNextStep">
+            Conditional delegate which returns true as long as there is 
+            additional work.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.WebBrowserTick.#ctor(System.Func{System.Boolean},System.Int32)">
+            <summary>
+            Sets up a new run method manager.
+            </summary>
+            <param name="runNextStep">
+            Conditional delegate which returns true as long as there is 
+            additional work.
+            </param>
+            <param name="millisecondInterval">Milliseconds between ticks, at a 
+            minimum.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.WebBrowserTick.Run">
+            <summary>
+            Begin the execution process by hooking up the underlying 
+            DispatcherTimer to call into the test framework regularly and 
+            perform test work items.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.WebBrowserTick.Timer_Tick(System.Object,System.EventArgs)">
+            <summary>
+            Call into the underlying work item queue, if the method manager is 
+            still set to run.
+            </summary>
+            <param name="sender">Sending object.</param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.TestHarnessState">
+            <summary>
+            Base class representing the overall state of a test run.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestHarnessState.IncrementFailures">
+            <summary>
+            Increment the failures counter.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.TestHarnessState.IncrementTotalScenarios">
+            <summary>
+            Increments the total scenarios counter.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.TestHarnessState.Failures">
+            <summary>
+            Gets the count of failing scenarios.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.TestHarnessState.TotalScenarios">
+            <summary>
+            Gets the total count of scenarios run.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Harness.TestHarnessState.Failed">
+            <summary>
+            Gets a value indicating whether the status recorded indicates a
+            failure.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Harness.ReflectionUtility">
+            <summary>
+            A set of helper methods for interacting with methods and types that are
+            marked with attributes.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.ReflectionUtility.GetTypesWithAttribute(System.Reflection.Assembly,System.Type)">
+            <summary>
+            Retrieve all types in an assembly that are decorated with a specific
+            attribute.
+            </summary>
+            <param name="assembly">Assembly to search.</param>
+            <param name="decoratingAttribute">
+            Instance of the Type of attribute that marks interesting methods.
+            </param>
+            <returns>
+            A collection of types from the assembly.  An empty collection is
+            returned if no types were found matching the constraints.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.ReflectionUtility.GetAttributes(System.Reflection.MemberInfo,System.Type)">
+            <summary>
+            Given a MethodInfo type, returns the attributes (if any) that are of 
+            the decoratingAttribute parameter's type.
+            </summary>
+            <param name="member">MemberInfo instance.</param>
+            <param name="decoratingAttribute">Attribute of interest.</param>
+            <returns>
+            A collection populated with the Attribute instances.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.ReflectionUtility.GetAttributes(System.Reflection.MemberInfo,System.Type,System.Boolean)">
+            <summary>
+            Given a MethodInfo type, returns the attributes (if any) that are of 
+            the decoratingAttribute parameter's type.
+            </summary>
+            <param name="member">MemberInfo instance.</param>
+            <param name="decoratingAttribute">Attribute of interest.</param>
+            <param name="inherit">A value indicating whether to look for 
+            inheriting custom attributes.</param>
+            <returns>
+            A collection populated with the Attribute instances.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.ReflectionUtility.GetAttributes(Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod,System.Type,System.Boolean)">
+            <summary>
+            Given a test method, returns the attributes (if any) that are of 
+            the decoratingAttribute parameter's type.
+            </summary>
+            <param name="method">ITestMethod instance.</param>
+            <param name="decoratingAttribute">Attribute of interest.</param>
+            <param name="inherit">Whether to inherit attributes.</param>
+            <returns>
+            A collection populated with the Attribute instances.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.ReflectionUtility.GetAssembliesFromInstances(System.Collections.Generic.IEnumerable{System.Object})">
+            <summary>
+            Retrieve a list of Reflection.Assembly types from a set of 
+            instances and/or types.
+            </summary>
+            <param name="objects">Set of instances or types.</param>
+            <returns>A set of Assembly instances from the instances or types.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.ReflectionUtility.GetAssemblies(System.Type[])">
+            <summary>
+            Returns a list of unique assemblies from a set of types.
+            </summary>
+            <param name="types">Set of types.</param>
+            <returns>
+            A list of unique Assembly instances from the input types.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.ReflectionUtility.GetAttribute(System.Collections.Generic.ICollection{System.Attribute})">
+            <summary>
+            Given a list of attributes, retrieves a single Attribute instance.
+            Will throw an exception if multiple attributes exist on the method.
+            </summary>
+            <param name="attributes">List of attributes.</param>
+            <returns>
+            The attribute instance, or null if it does not exist.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.ReflectionUtility.GetAttribute(System.Reflection.MemberInfo,System.Type)">
+            <summary>
+            Given a method and a decorative attribute of interest, retrieves a
+            single Attribute instance.  Will throw an exception if multiple
+            attributes exist on the method.
+            </summary>
+            <param name="member">MemberInfo instance.</param>
+            <param name="decoratingAttribute">
+            Attribute type of interest.
+            </param>
+            <returns>
+            The attribute instance, or null if it does not exist.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.ReflectionUtility.GetAttribute(Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod,System.Type)">
+            <summary>
+            Given a test method and a decorative attribute of interest,
+            retrieves a single Attribute instance.  Will throw an exception if
+            multiple attributes exist on the method.
+            </summary>
+            <param name="method">ITestMethod instance.</param>
+            <param name="decoratingAttribute">
+            Attribute type of interest.
+            </param>
+            <returns>
+            The attribute instance, or null if it does not exist.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.ReflectionUtility.GetAttribute(Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod,System.Type,System.Boolean)">
+            <summary>
+            Given a test method and a decorative attribute of interest,
+            retrieves a single Attribute instance.  Will throw an exception if
+            multiple attributes exist on the method.
+            </summary>
+            <param name="method">ITestMethod instance.</param>
+            <param name="decoratingAttribute">
+            Attribute type of interest.
+            </param>
+            <param name="inherit">A value indicating whether to look for custom 
+            inherited attributes.</param>
+            <returns>
+            The attribute instance, or null if it does not exist.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.ReflectionUtility.HasAttribute(System.Reflection.MemberInfo,System.Type)">
+            <summary>
+            Returns a value indicating whether a method has the attribute.
+            </summary>
+            <param name="member">MemberInfo instance.</param>
+            <param name="decoratingAttribute">Attribute of interest.</param>
+            <returns>
+            A value indicating whether the type has the decorating attribute or
+            not.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.ReflectionUtility.HasAttribute(Microsoft.Silverlight.Testing.UnitTesting.Metadata.ITestMethod,System.Type)">
+            <summary>
+            Returns a value indicating whether a method has the attribute.
+            </summary>
+            <param name="method">ITestMethod instance.</param>
+            <param name="decoratingAttribute">Attribute of interest.</param>
+            <returns>
+            A value indicating whether the type has the decorating attribute or
+            not.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.ReflectionUtility.GetMethodsWithAttribute(System.Type,System.Type)">
+            <summary>
+            Return a collection of MethodInfo instances given a type to look
+            through  and the attribute of interest.
+            </summary>
+            <param name="type">Type to look through for methods.</param>
+            <param name="decoratingAttribute">Attribute of interest.</param>
+            <returns>
+            A collection of the method reflection objects, if any, with the
+            marked attribute present.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Harness.ReflectionUtility.GetOneMethodWithAttribute(System.Type,System.Type)">
+            <summary>
+            Retrieve a MethodInfo from a single decorated method inside a type,
+            if any.  Throws an Exception if there are > 1 methods that are
+            decorated with the attribute.
+            </summary>
+            <param name="type">Type of interest.</param>
+            <param name="decoratingAttribute">Attribute of interest.</param>
+            <returns>
+            MethodInfo reflection object.  Null if none are found.
+            </returns>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Client.ClipboardHelper">
+            <summary>
+            Exposes clipboard functionality within Silverlight 3 applications when a
+            Silverlight 4 runtime is in use.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.ClipboardHelper.EmptyObjectArray">
+            <summary>
+            An empty array of object type.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.ClipboardHelper._setText">
+            <summary>
+            Backing field for set text.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.ClipboardHelper._getText">
+            <summary>
+            Backing field for get text.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.ClipboardHelper._containsText">
+            <summary>
+            Backing field for the contains text method.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Client.ClipboardHelper._clipboardFeatureSupported">
+            <summary>
+            A value indicating whether the clipboard feature is present. This
+            assumes that all 3 methods are present, in their current form for a
+            more recent runtime.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.ClipboardHelper.SetText(System.String)">
+            <summary>
+            Sets Unicode text data to store on the clipboard, for later access 
+            with System.Windows.Clipboard.GetText().
+            </summary>
+            <param name="text">A string that contains the Unicode text data to 
+            store on the clipboard.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.ClipboardHelper.GetText">
+            <summary>
+            Retrieves Unicode text data from the system clipboard, if Unicode 
+            text data exists.
+            </summary>
+            <returns>If Unicode text data is present on the system clipboard, 
+            returns a string that contains the Unicode text data. Otherwise, 
+            returns an empty string.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.ClipboardHelper.ContainsText">
+            <summary>
+            Queries the clipboard for the presence of data in the Unicode text 
+            format.
+            </summary>
+            <returns>True if the system clipboard contains Unicode text data; 
+            otherwise, false.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.ClipboardHelper.RequireClipboardFeature">
+            <summary>
+            Prepares to use the System.Windows.Clipboard type and throws an
+            exception if the feature cannot be completely located.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Client.ClipboardHelper.PrepareClipboardInstance">
+            <summary>
+            Prepares the type and reflects for new Silverlight features.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Client.ClipboardHelper.IsClipboardFeatureSupported">
+            <summary>
+            Gets a value indicating whether the clipboard feature is available
+            and supported.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Controls.BindingEvaluator`1">
+            <summary>
+            A framework element that permits a binding to be evaluated in a new data
+            context leaf node.
+            </summary>
+            <typeparam name="T">The type of dynamic binding to return.</typeparam>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.BindingEvaluator`1._binding">
+            <summary>
+            Gets or sets the string value binding used by the control.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.BindingEvaluator`1.ValueProperty">
+            <summary>
+            Identifies the Value dependency property.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.BindingEvaluator`1.#ctor">
+            <summary>
+            Initializes a new instance of the BindingEvaluator class.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.BindingEvaluator`1.#ctor(System.Windows.Data.Binding)">
+            <summary>
+            Initializes a new instance of the BindingEvaluator class,
+            setting the initial binding to the provided parameter.
+            </summary>
+            <param name="binding">The initial string value binding.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.BindingEvaluator`1.ClearDataContext">
+            <summary>
+            Clears the data context so that the control does not keep a
+            reference to the last-looked up item.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.BindingEvaluator`1.GetDynamicValue(System.Object,System.Boolean)">
+            <summary>
+            Updates the data context of the framework element and returns the 
+            updated binding value.
+            </summary>
+            <param name="o">The object to use as the data context.</param>
+            <param name="clearDataContext">If set to true, this parameter will
+            clear the data context immediately after retrieving the value.</param>
+            <returns>Returns the evaluated T value of the bound dependency
+            property.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.BindingEvaluator`1.GetDynamicValue(System.Object)">
+            <summary>
+            Updates the data context of the framework element and returns the 
+            updated binding value.
+            </summary>
+            <param name="o">The object to use as the data context.</param>
+            <returns>Returns the evaluated T value of the bound dependency
+            property.</returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.BindingEvaluator`1.Value">
+            <summary>
+            Gets or sets the data item string value.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.BindingEvaluator`1.ValueBinding">
+            <summary>
+            Gets or sets the value binding.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Controls.Dock">
+            <summary>
+            Specifies values that control the behavior of a control positioned
+            inside another control.
+            </summary>
+            <QualityBand>Stable</QualityBand>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.Dock.Left">
+            <summary>
+            Specifies that the control should be positioned on the left of the
+            control.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.Dock.Top">
+            <summary>
+            Specifies that the control should be positioned on top of the
+            control.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.Dock.Right">
+            <summary>
+            Specifies that the control should be positioned on the right of the
+            control.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.Dock.Bottom">
+            <summary>
+            Specifies that the control should be positioned at the bottom of 
+            control.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Controls.InteractionHelper">
+            <summary>
+            The InteractionHelper provides controls with support for all of the
+            common interactions like mouse movement, mouse clicks, key presses,
+            etc., and also incorporates proper event semantics when the control is
+            disabled.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.InteractionHelper.SequentialClickThresholdInMilliseconds">
+            <summary>
+            The threshold used to determine whether two clicks are temporally
+            local and considered a double click (or triple, quadruple, etc.).
+            500 milliseconds is the default double click value on Windows.
+            This value would ideally be pulled form the system settings.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.InteractionHelper.SequentialClickThresholdInPixelsSquared">
+            <summary>
+            The threshold used to determine whether two clicks are spatially
+            local and considered a double click (or triple, quadruple, etc.)
+            in pixels squared.  We use pixels squared so that we can compare to
+            the distance delta without taking a square root.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.InteractionHelper._updateVisualState">
+            <summary>
+            Reference used to call UpdateVisualState on the base class.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.InteractionHelper.#ctor(System.Windows.Controls.Control)">
+            <summary>
+            Initializes a new instance of the InteractionHelper class.
+            </summary>
+            <param name="control">Control receiving interaction.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.InteractionHelper.UpdateVisualState(System.Boolean)">
+            <summary>
+            Update the visual state of the control.
+            </summary>
+            <param name="useTransitions">
+            A value indicating whether to automatically generate transitions to
+            the new state, or instantly transition to the new state.
+            </param>
+            <remarks>
+            UpdateVisualState works differently than the rest of the injected
+            functionality.  Most of the other events are overridden by the
+            calling class which calls Allow, does what it wants, and then calls
+            Base.  UpdateVisualState is the opposite because a number of the
+            methods in InteractionHelper need to trigger it in the calling
+            class.  We do this using the IUpdateVisualState internal interface.
+            </remarks>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.InteractionHelper.UpdateVisualStateBase(System.Boolean)">
+            <summary>
+            Update the visual state of the control.
+            </summary>
+            <param name="useTransitions">
+            A value indicating whether to automatically generate transitions to
+            the new state, or instantly transition to the new state.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.InteractionHelper.OnLoaded(System.Object,System.Windows.RoutedEventArgs)">
+            <summary>
+            Handle the control's Loaded event.
+            </summary>
+            <param name="sender">The control.</param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.InteractionHelper.OnIsEnabledChanged(System.Object,System.Windows.DependencyPropertyChangedEventArgs)">
+            <summary>
+            Handle changes to the control's IsEnabled property.
+            </summary>
+            <param name="sender">The control.</param>
+            <param name="e">Event arguments.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.InteractionHelper.OnIsReadOnlyChanged(System.Boolean)">
+            <summary>
+            Handles changes to the control's IsReadOnly property.
+            </summary>
+            <param name="value">The value of the property.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.InteractionHelper.OnApplyTemplateBase">
+            <summary>
+            Update the visual state of the control when its template is changed.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.InteractionHelper.AllowGotFocus(System.Windows.RoutedEventArgs)">
+            <summary>
+            Check if the control's GotFocus event should be handled.
+            </summary>
+            <param name="e">Event arguments.</param>
+            <returns>
+            A value indicating whether the event should be handled.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.InteractionHelper.OnGotFocusBase">
+            <summary>
+            Base implementation of the virtual GotFocus event handler.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.InteractionHelper.AllowLostFocus(System.Windows.RoutedEventArgs)">
+            <summary>
+            Check if the control's LostFocus event should be handled.
+            </summary>
+            <param name="e">Event arguments.</param>
+            <returns>
+            A value indicating whether the event should be handled.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.InteractionHelper.OnLostFocusBase">
+            <summary>
+            Base implementation of the virtual LostFocus event handler.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.InteractionHelper.AllowMouseEnter(System.Windows.Input.MouseEventArgs)">
+            <summary>
+            Check if the control's MouseEnter event should be handled.
+            </summary>
+            <param name="e">Event arguments.</param>
+            <returns>
+            A value indicating whether the event should be handled.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.InteractionHelper.OnMouseEnterBase">
+            <summary>
+            Base implementation of the virtual MouseEnter event handler.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.InteractionHelper.AllowMouseLeave(System.Windows.Input.MouseEventArgs)">
+            <summary>
+            Check if the control's MouseLeave event should be handled.
+            </summary>
+            <param name="e">Event arguments.</param>
+            <returns>
+            A value indicating whether the event should be handled.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.InteractionHelper.OnMouseLeaveBase">
+            <summary>
+            Base implementation of the virtual MouseLeave event handler.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.InteractionHelper.AllowMouseLeftButtonDown(System.Windows.Input.MouseButtonEventArgs)">
+            <summary>
+            Check if the control's MouseLeftButtonDown event should be handled.
+            </summary>
+            <param name="e">Event arguments.</param>
+            <returns>
+            A value indicating whether the event should be handled.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.InteractionHelper.OnMouseLeftButtonDownBase">
+            <summary>
+            Base implementation of the virtual MouseLeftButtonDown event
+            handler.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.InteractionHelper.AllowMouseLeftButtonUp(System.Windows.Input.MouseButtonEventArgs)">
+            <summary>
+            Check if the control's MouseLeftButtonUp event should be handled.
+            </summary>
+            <param name="e">Event arguments.</param>
+            <returns>
+            A value indicating whether the event should be handled.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.InteractionHelper.OnMouseLeftButtonUpBase">
+            <summary>
+            Base implementation of the virtual MouseLeftButtonUp event handler.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.InteractionHelper.AllowKeyDown(System.Windows.Input.KeyEventArgs)">
+            <summary>
+            Check if the control's KeyDown event should be handled.
+            </summary>
+            <param name="e">Event arguments.</param>
+            <returns>
+            A value indicating whether the event should be handled.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.InteractionHelper.AllowKeyUp(System.Windows.Input.KeyEventArgs)">
+            <summary>
+            Check if the control's KeyUp event should be handled.
+            </summary>
+            <param name="e">Event arguments.</param>
+            <returns>
+            A value indicating whether the event should be handled.
+            </returns>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.InteractionHelper.Control">
+            <summary>
+            Gets the control the InteractionHelper is targeting.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.InteractionHelper.IsFocused">
+            <summary>
+            Gets a value indicating whether the control has focus.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.InteractionHelper.IsMouseOver">
+            <summary>
+            Gets a value indicating whether the mouse is over the control.
+            </summary> 
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.InteractionHelper.IsReadOnly">
+            <summary>
+            Gets a value indicating whether the read-only property is set.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.InteractionHelper.IsPressed">
+            <summary>
+            Gets a value indicating whether the mouse button is pressed down
+            over the control.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.InteractionHelper.LastClickTime">
+            <summary>
+            Gets or sets the last time the control was clicked.
+            </summary>
+            <remarks>
+            The value is stored as Utc time because it is slightly more
+            performant than converting to local time.
+            </remarks>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.InteractionHelper.LastClickPosition">
+            <summary>
+            Gets or sets the mouse position of the last click.
+            </summary>
+            <remarks>The value is relative to the control.</remarks>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.InteractionHelper.ClickCount">
+            <summary>
+            Gets the number of times the control was clicked.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Controls.ItemsControlHelper">
+            <summary>
+            The ItemContainerGenerator provides useful utilities for ItemsControls.
+            </summary>
+            <QualityBand>Preview</QualityBand>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.ItemsControlHelper._itemsHost">
+            <summary>
+            A Panel that is used as the ItemsHost of the ItemsControl.  This
+            property will only be valid when the ItemsControl is live in the
+            tree and has generated containers for some of its items.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.ItemsControlHelper._scrollHost">
+            <summary>
+            A ScrollViewer that is used to scroll the items in the ItemsHost.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ItemsControlHelper.#ctor(System.Windows.Controls.ItemsControl)">
+            <summary>
+            Initializes a new instance of the ItemContainerGenerator.
+            </summary>
+            <param name="control">
+            The ItemsControl being tracked by the ItemContainerGenerator.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ItemsControlHelper.OnApplyTemplate">
+            <summary>
+            Apply a control template to the ItemsControl.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ItemsControlHelper.PrepareContainerForItemOverride(System.Windows.DependencyObject,System.Windows.Style)">
+            <summary>
+            Prepares the specified container to display the specified item.
+            </summary>
+            <param name="element">
+            Container element used to display the specified item.
+            </param>
+            <param name="parentItemContainerStyle">
+            The ItemContainerStyle for the parent ItemsControl.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ItemsControlHelper.UpdateItemContainerStyle(System.Windows.Style)">
+            <summary>
+            Update the style of any generated items when the ItemContainerStyle
+            has been changed.
+            </summary>
+            <param name="itemContainerStyle">The ItemContainerStyle.</param>
+            <remarks>
+            Silverlight does not support setting a Style multiple times, so we
+            only attempt to set styles on elements whose style hasn't already
+            been set.
+            </remarks>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ItemsControlHelper.ScrollIntoView(System.Windows.FrameworkElement)">
+            <summary>
+            Scroll the desired element into the ScrollHost's viewport.
+            </summary>
+            <param name="element">Element to scroll into view.</param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.ItemsControlHelper.ItemsControl">
+            <summary>
+            Gets or sets the ItemsControl being tracked by the
+            ItemContainerGenerator.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.ItemsControlHelper.ItemsHost">
+            <summary>
+            Gets a Panel that is used as the ItemsHost of the ItemsControl.
+            This property will only be valid when the ItemsControl is live in
+            the tree and has generated containers for some of its items.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.ItemsControlHelper.ScrollHost">
+            <summary>
+            Gets a ScrollViewer that is used to scroll the items in the
+            ItemsHost.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Controls.NumericExtensions">
+            <summary>
+            Numeric utility methods used by controls.  These methods are similar in
+            scope to the WPF DoubleUtil class.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.NumericExtensions.IsZero(System.Double)">
+            <summary>
+            Check if a number is zero.
+            </summary>
+            <param name="value">The number to check.</param>
+            <returns>True if the number is zero, false otherwise.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.NumericExtensions.IsNaN(System.Double)">
+            <summary>
+            Check if a number isn't really a number.
+            </summary>
+            <param name="value">The number to check.</param>
+            <returns>
+            True if the number is not a number, false if it is a number.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.NumericExtensions.IsGreaterThan(System.Double,System.Double)">
+            <summary>
+            Determine if one number is greater than another.
+            </summary>
+            <param name="left">First number.</param>
+            <param name="right">Second number.</param>
+            <returns>
+            True if the first number is greater than the second, false
+            otherwise.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.NumericExtensions.IsLessThanOrClose(System.Double,System.Double)">
+            <summary>
+            Determine if one number is less than or close to another.
+            </summary>
+            <param name="left">First number.</param>
+            <param name="right">Second number.</param>
+            <returns>
+            True if the first number is less than or close to the second, false
+            otherwise.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.NumericExtensions.AreClose(System.Double,System.Double)">
+            <summary>
+            Determine if two numbers are close in value.
+            </summary>
+            <param name="left">First number.</param>
+            <param name="right">Second number.</param>
+            <returns>
+            True if the first number is close in value to the second, false
+            otherwise.
+            </returns>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Controls.NumericExtensions.NanUnion">
+            <summary>
+            NanUnion is a C++ style type union used for efficiently converting
+            a double into an unsigned long, whose bits can be easily
+            manipulated.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.NumericExtensions.NanUnion.FloatingValue">
+            <summary>
+            Floating point representation of the union.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.NumericExtensions.NanUnion.IntegerValue">
+            <summary>
+            Integer representation of the union.
+            </summary>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Controls.RoutedPropertyChangingEventArgs`1">
+            <summary>
+            Provides event data for various routed events that track property values
+            changing.  Typically the events denote a cancellable action.
+            </summary>
+            <typeparam name="T">
+            The type of the value for the dependency property that is changing.
+            </typeparam>
+            <QualityBand>Preview</QualityBand>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.RoutedPropertyChangingEventArgs`1._cancel">
+            <summary>
+            Private member variable for Cancel property.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.RoutedPropertyChangingEventArgs`1.#ctor(System.Windows.DependencyProperty,`0,`0,System.Boolean)">
+            <summary>
+            Initializes a new instance of the
+            <see cref="T:Microsoft.Silverlight.Testing.Controls.RoutedPropertyChangingEventArgs`1" />
+            class.
+            </summary>
+            <param name="property">
+            The <see cref="T:System.Windows.DependencyProperty" /> identifier
+            for the property that is changing.
+            </param>
+            <param name="oldValue">The previous value of the property.</param>
+            <param name="newValue">
+            The new value of the property, assuming that the property change is
+            not cancelled.
+            </param>
+            <param name="isCancelable">
+            True if the property change is cancellable by setting
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.RoutedPropertyChangingEventArgs`1.Cancel" />
+            to true in event handling. false if the property change is not
+            cancellable.
+            </param>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.RoutedPropertyChangingEventArgs`1.Property">
+            <summary>
+            Gets the <see cref="T:System.Windows.DependencyProperty" />
+            identifier for the property that is changing.
+            </summary>
+            <value>
+            The <see cref="T:System.Windows.DependencyProperty" /> identifier
+            for the property that is changing.
+            </value>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.RoutedPropertyChangingEventArgs`1.OldValue">
+            <summary>
+            Gets a value that reports the previous value of the changing
+            property.
+            </summary>
+            <value>
+            The previous value of the changing property.
+            </value>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.RoutedPropertyChangingEventArgs`1.NewValue">
+            <summary>
+            Gets or sets a value that reports the new value of the changing
+            property, assuming that the property change is not cancelled.
+            </summary>
+            <value>
+            The new value of the changing property.
+            </value>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.RoutedPropertyChangingEventArgs`1.IsCancelable">
+            <summary>
+            Gets a value indicating whether the property change that originated
+            the RoutedPropertyChanging event is cancellable.
+            </summary>
+            <value>
+            True if the property change is cancellable. false if the property
+            change is not cancellable.
+            </value>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.RoutedPropertyChangingEventArgs`1.Cancel">
+            <summary>
+            Gets or sets a value indicating whether the property change that
+            originated the RoutedPropertyChanging event should be cancelled.
+            </summary>
+            <value>
+            True to cancel the property change; this resets the property to
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.RoutedPropertyChangingEventArgs`1.OldValue" />.
+            false to not cancel the property change; the value changes to
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.RoutedPropertyChangingEventArgs`1.NewValue" />.
+            </value>
+            <exception cref="T:System.InvalidOperationException">
+            Attempted to cancel in an instance where
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.RoutedPropertyChangingEventArgs`1.IsCancelable" />
+            is false.
+            </exception>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.RoutedPropertyChangingEventArgs`1.InCoercion">
+            <summary>
+            Gets or sets a value indicating whether internal value coercion is
+            acting on the property change that originated the
+            RoutedPropertyChanging event.
+            </summary>
+            <value>
+            True if coercion is active. false if coercion is not active.
+            </value>
+            <remarks>
+            This is a total hack to work around the class hierarchy for Value
+            coercion in NumericUpDown.
+            </remarks>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Controls.RoutedPropertyChangingEventHandler`1">
+            <summary>
+            Represents methods that handle various routed events that track property
+            values changing.  Typically the events denote a cancellable action.
+            </summary>
+            <typeparam name="T">
+            The type of the value for the dependency property that is changing.
+            </typeparam>
+            <param name="sender">
+            The object where the initiating property is changing.
+            </param>
+            <param name="e">Event data for the event.</param>
+            <QualityBand>Preview</QualityBand>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Controls.ScrollExtensions">
+            <summary>
+            The ScrollExtensions class provides utility methods for scrolling items
+            ScrollViewers.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.ScrollExtensions.LineChange">
+            <summary>
+            The amount to scroll a ScrollViewer for a line change.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ScrollExtensions.ScrollByVerticalOffset(System.Windows.Controls.ScrollViewer,System.Double)">
+            <summary>
+            Scroll a ScrollViewer vertically by a given offset.
+            </summary>
+            <param name="viewer">The ScrollViewer.</param>
+            <param name="offset">The vertical offset to scroll.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ScrollExtensions.ScrollByHorizontalOffset(System.Windows.Controls.ScrollViewer,System.Double)">
+            <summary>
+            Scroll a ScrollViewer horizontally by a given offset.
+            </summary>
+            <param name="viewer">The ScrollViewer.</param>
+            <param name="offset">The horizontal offset to scroll.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ScrollExtensions.LineUp(System.Windows.Controls.ScrollViewer)">
+            <summary>
+            Scroll the ScrollViewer up by a line.
+            </summary>
+            <param name="viewer">The ScrollViewer.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ScrollExtensions.LineDown(System.Windows.Controls.ScrollViewer)">
+            <summary>
+            Scroll the ScrollViewer down by a line.
+            </summary>
+            <param name="viewer">The ScrollViewer.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ScrollExtensions.LineLeft(System.Windows.Controls.ScrollViewer)">
+            <summary>
+            Scroll the ScrollViewer left by a line.
+            </summary>
+            <param name="viewer">The ScrollViewer.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ScrollExtensions.LineRight(System.Windows.Controls.ScrollViewer)">
+            <summary>
+            Scroll the ScrollViewer right by a line.
+            </summary>
+            <param name="viewer">The ScrollViewer.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ScrollExtensions.PageUp(System.Windows.Controls.ScrollViewer)">
+            <summary>
+            Scroll the ScrollViewer up by a page.
+            </summary>
+            <param name="viewer">The ScrollViewer.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ScrollExtensions.PageDown(System.Windows.Controls.ScrollViewer)">
+            <summary>
+            Scroll the ScrollViewer down by a page.
+            </summary>
+            <param name="viewer">The ScrollViewer.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ScrollExtensions.PageLeft(System.Windows.Controls.ScrollViewer)">
+            <summary>
+            Scroll the ScrollViewer left by a page.
+            </summary>
+            <param name="viewer">The ScrollViewer.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ScrollExtensions.PageRight(System.Windows.Controls.ScrollViewer)">
+            <summary>
+            Scroll the ScrollViewer right by a page.
+            </summary>
+            <param name="viewer">The ScrollViewer.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ScrollExtensions.ScrollToTop(System.Windows.Controls.ScrollViewer)">
+            <summary>
+            Scroll the ScrollViewer to the top.
+            </summary>
+            <param name="viewer">The ScrollViewer.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ScrollExtensions.ScrollToBottom(System.Windows.Controls.ScrollViewer)">
+            <summary>
+            Scroll the ScrollViewer to the bottom.
+            </summary>
+            <param name="viewer">The ScrollViewer.</param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.ScrollExtensions.GetTopAndBottom(System.Windows.FrameworkElement,System.Windows.FrameworkElement,System.Double@,System.Double@)">
+            <summary>
+            Get the top and bottom of an element with respect to its parent.
+            </summary>
+            <param name="element">The element to get the position of.</param>
+            <param name="parent">The parent of the element.</param>
+            <param name="top">Vertical offset to the top of the element.</param>
+            <param name="bottom">
+            Vertical offset to the bottom of the element.
+            </param>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Controls.TypeConverters">
+            <summary>
+            Common TypeConverter functionality.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TypeConverters.CanConvertFrom``1(System.Type)">
+            <summary>
+            Returns a value indicating whether this converter can convert an
+            object of the given type to an instance of the expected type.
+            </summary>
+            <typeparam name="T">Expected type of the converter.</typeparam>
+            <param name="sourceType">
+            The type of the source that is being evaluated for conversion.
+            </param>
+            <returns>
+            A value indicating whether the converter can convert the provided
+            type.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TypeConverters.ConvertFrom``1(System.ComponentModel.TypeConverter,System.Object)">
+            <summary>
+            Attempts to convert a specified object to an instance of the
+            expected type.
+            </summary>
+            <typeparam name="T">Expected type of the converter.</typeparam>
+            <param name="converter">TypeConverter instance.</param>
+            <param name="value">The object being converted.</param>
+            <returns>
+            The instance of the expected type created from the converted object.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TypeConverters.CanConvertTo``1(System.Type)">
+            <summary>
+            Determines whether conversion is possible to a specified type.
+            </summary>
+            <typeparam name="T">Expected type of the converter.</typeparam>
+            <param name="destinationType">
+            Identifies the data type to evaluate for conversion.
+            </param>
+            <returns>
+            A value indicating whether conversion is possible.
+            </returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.TypeConverters.ConvertTo(System.ComponentModel.TypeConverter,System.Object,System.Type)">
+            <summary>
+            Attempts to convert a specified object to an instance of the
+            desired type.
+            </summary>
+            <param name="converter">TypeConverter instance.</param>
+            <param name="value">The object being converted.</param>
+            <param name="destinationType">
+            The type to convert the value to.
+            </param>
+            <returns>
+            The value of the conversion to the specified type.
+            </returns>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Controls.VisualStates">
+            <summary>
+            Names and helpers for visual states in the controls.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.GroupCommon">
+            <summary>
+            Common state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateNormal">
+            <summary>
+            Normal state of the Common state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateReadOnly">
+            <summary>
+            Normal state of the Common state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateMouseOver">
+            <summary>
+            MouseOver state of the Common state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StatePressed">
+            <summary>
+            Pressed state of the Common state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateDisabled">
+            <summary>
+            Disabled state of the Common state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.GroupFocus">
+            <summary>
+            Focus state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateUnfocused">
+            <summary>
+            Unfocused state of the Focus state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateFocused">
+            <summary>
+            Focused state of the Focus state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.GroupSelection">
+            <summary>
+            Selection state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateSelected">
+            <summary>
+            Selected state of the Selection state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateUnselected">
+            <summary>
+            Unselected state of the Selection state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateSelectedInactive">
+            <summary>
+            Selected inactive state of the Selection state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.GroupExpansion">
+            <summary>
+            Expansion state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateExpanded">
+            <summary>
+            Expanded state of the Expansion state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateCollapsed">
+            <summary>
+            Collapsed state of the Expansion state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.GroupPopup">
+            <summary>
+            Popup state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StatePopupOpened">
+            <summary>
+            Opened state of the Popup state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StatePopupClosed">
+            <summary>
+            Closed state of the Popup state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.GroupValidation">
+            <summary>
+            ValidationStates state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateValid">
+            <summary>
+            The valid state for the ValidationStates group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateInvalidFocused">
+            <summary>
+            Invalid, focused state for the ValidationStates group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateInvalidUnfocused">
+            <summary>
+            Invalid, unfocused state for the ValidationStates group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.GroupExpandDirection">
+            <summary>
+            ExpandDirection state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateExpandDown">
+            <summary>
+            Down expand direction state of ExpandDirection state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateExpandUp">
+            <summary>
+            Up expand direction state of ExpandDirection state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateExpandLeft">
+            <summary>
+            Left expand direction state of ExpandDirection state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateExpandRight">
+            <summary>
+            Right expand direction state of ExpandDirection state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.GroupHasItems">
+            <summary>
+            HasItems state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateHasItems">
+            <summary>
+            HasItems state of the HasItems state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateNoItems">
+            <summary>
+            NoItems state of the HasItems state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.GroupIncrease">
+            <summary>
+            Increment state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateIncreaseEnabled">
+            <summary>
+            State enabled for increment group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateIncreaseDisabled">
+            <summary>
+            State disabled for increment group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.GroupDecrease">
+            <summary>
+            Decrement state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateDecreaseEnabled">
+            <summary>
+            State enabled for decrement group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateDecreaseDisabled">
+            <summary>
+            State disabled for decrement group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.GroupInteractionMode">
+            <summary>
+            InteractionMode state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateEdit">
+            <summary>
+            Edit of the DisplayMode state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateDisplay">
+            <summary>
+            Display of the DisplayMode state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.GroupLocked">
+            <summary>
+            DisplayMode state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateLocked">
+            <summary>
+            Edit of the DisplayMode state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateUnlocked">
+            <summary>
+            Display of the DisplayMode state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateActive">
+            <summary>
+            Active state.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateInactive">
+            <summary>
+            Inactive state.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.GroupActive">
+            <summary>
+            Active state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateUnwatermarked">
+            <summary>
+            Non-watermarked state.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateWatermarked">
+            <summary>
+            Watermarked state.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.GroupWatermark">
+            <summary>
+            Watermark state group.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateCalendarButtonUnfocused">
+            <summary>
+            Unfocused state for Calendar Buttons.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.StateCalendarButtonFocused">
+            <summary>
+            Focused state for Calendar Buttons.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.VisualStates.GroupCalendarButtonFocus">
+            <summary>
+            CalendarButtons Focus state group.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.VisualStates.GoToState(System.Windows.Controls.Control,System.Boolean,System.String[])">
+            <summary>
+            Use VisualStateManager to change the visual state of the control.
+            </summary>
+            <param name="control">
+            Control whose visual state is being changed.
+            </param>
+            <param name="useTransitions">
+            A value indicating whether to use transitions when updating the
+            visual state, or to snap directly to the new visual state.
+            </param>
+            <param name="stateNames">
+            Ordered list of state names and fallback states to transition into.
+            Only the first state to be found will be used.
+            </param>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.VisualStates.GetImplementationRoot(System.Windows.DependencyObject)">
+            <summary>
+            Gets the implementation root of the Control.
+            </summary>
+            <param name="dependencyObject">The DependencyObject.</param>
+            <remarks>
+            Implements Silverlight's corresponding internal property on Control.
+            </remarks>
+            <returns>Returns the implementation root or null.</returns>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.VisualStates.TryGetVisualStateGroup(System.Windows.DependencyObject,System.String)">
+            <summary>
+            This method tries to get the named VisualStateGroup for the 
+            dependency object. The provided object's ImplementationRoot will be 
+            looked up in this call.
+            </summary>
+            <param name="dependencyObject">The dependency object.</param>
+            <param name="groupName">The visual state group's name.</param>
+            <returns>Returns null or the VisualStateGroup object.</returns>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Controls.HierarchicalDataTemplate">
+            <summary>
+            Represents a <see cref="T:System.Windows.DataTemplate" /> that supports
+            <see cref="T:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl" /> objects,
+            such as <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" />.
+            </summary>
+            <QualityBand>Stable</QualityBand>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.HierarchicalDataTemplate._itemTemplate">
+            <summary>
+            The DataTemplate to apply to the ItemTemplate property on a
+            generated HeaderedItemsControl (such as a MenuItem or a
+            TreeViewItem), to indicate how to display items from the next level
+            in the data hierarchy.
+            </summary>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.HierarchicalDataTemplate._itemContainerStyle">
+            <summary>
+            The Style to apply to the ItemContainerStyle property on a generated
+            HeaderedItemsControl (such as a MenuItem or a TreeViewItem), to
+            indicate how to style items from the next level in the data
+            hierarchy.
+            </summary>
+        </member>
+        <member name="M:Microsoft.Silverlight.Testing.Controls.HierarchicalDataTemplate.#ctor">
+            <summary>
+            Initializes a new instance of the
+            <see cref="T:System.Windows.HierarchicalDataTemplate" /> class.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.HierarchicalDataTemplate.ItemsSource">
+            <summary>
+            Gets or sets the collection that is used to generate content for the
+            next sublevel in the data hierarchy.
+            </summary>
+            <value>
+            The collection that is used to generate content for the next
+            sublevel in the data hierarchy.  The default value is null.
+            </value>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.HierarchicalDataTemplate.IsItemTemplateSet">
+            <summary>
+            Gets a value indicating whether the ItemTemplate property was set on
+            the template.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.HierarchicalDataTemplate.ItemTemplate">
+            <summary>
+            Gets or sets the <see cref="T:System.Windows.DataTemplate" /> to
+            apply to the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.ItemsControl.ItemTemplate" />
+            property on a generated
+            <see cref="T:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl" />, such
+            as a <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" />, to
+            indicate how to display items from the next sublevel in the data
+            hierarchy.
+            </summary>
+            <value>
+            The <see cref="T:System.Windows.DataTemplate" /> to apply to the
+            <see cref="P:Microsoft.Silverlight.Testing.Controls.ItemsControl.ItemTemplate" />
+            property on a generated
+            <see cref="T:Microsoft.Silverlight.Testing.Controls.HeaderedItemsControl" />, such
+            as a <see cref="T:Microsoft.Silverlight.Testing.Controls.TreeViewItem" />, to
+            indicate how to display items from the next sublevel in the data
+            hierarchy.
+            </value>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.HierarchicalDataTemplate.IsItemContainerStyleSet">
+            <summary>
+            Gets a value indicating whether the ItemContainerStyle property was
+            set on the template.
+            </summary>
+        </member>
+        <member name="P:Microsoft.Silverlight.Testing.Controls.HierarchicalDataTemplate.ItemContainerStyle">
+            <summary>
+            Gets or sets the <see cref="T:System.Windows.Style" /> that is
+            applied to the item container for each child item.
+            </summary>
+            <value>
+            The style that is applied to the item container for each child item.
+            </value>
+        </member>
+        <member name="T:Microsoft.Silverlight.Testing.Controls.DragValidator">
+            <summary>
+            Class to encapsulate drag behavior for a UIElement.
+            </summary>
+            <QualityBand>Mature</QualityBand>
+        </member>
+        <member name="F:Microsoft.Silverlight.Testing.Controls.DragValidator._targetElement">
+            <summary>
+            Inherited code: Requires comment.
+            </summary>
+        </member>
+        <member name="F:Microsoft