//
// MonoTests.Remoting.ContextsTest.cs
//
// Author: Lluis Sanchez Gual (lluis@ximian.com)
//
// 2003 (C) Copyright, Ximian, Inc.
//

using System;
using System.Net;
using System.Threading;
using System.Collections;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Lifetime;
using System.Runtime.Remoting.Channels.Tcp;
using System.Runtime.Remoting.Activation;
using System.Runtime.Remoting.Contexts;
using NUnit.Framework;

namespace MonoTests.Remoting
{
	[TestFixture]
	public class ContextsTest
	{
		TcpChannel ch;
		
		[TestFixtureSetUp]
		public void Run()
		{
			CallSeq.CommonDomainId = 1;
			Context.RegisterDynamicProperty (new DynProperty("global"), null, null);

			ch = new TcpChannel(0);
			ChannelServices.RegisterChannel (ch);
		}

		[TestFixtureTearDown]
		public void End ()
		{
			Context.UnregisterDynamicProperty ("global", null, null);
			if (ch != null)
				ChannelServices.UnregisterChannel (ch);
		}

		[Test]
		[Category ("NotWorking")] // disabled as it got not working by NUnit upgrade to 2.4.8
		public void TestSameContext ()
		{
			CallSeq.Init("TestSameContext");
			CallSeq.Add (">> TestSameContext");
			CallSeq.Add (">> Creating instance");
			ServerList list = new ServerList();
			CallSeq.Add ("<< Creating instance");
			RunTestObject (list);
			CallSeq.Add ("<< TestSameContext");
			CallSeq.Check (Checks.seqSameContext,1);
		}

		[Test]
		[Category ("NotWorking")] // disabled as it got not working by NUnit upgrade to 2.4.8
		public void TestNewContext ()
		{
			CallSeq.Init("TestNewContext");
			CallSeq.Add (">> TestNewContext");
			object[] at = new object[] { new ContextHookAttribute ("1",true)};
			CallSeq.Add (">> Creating instance");
			ServerList list = (ServerList) Activator.CreateInstance (typeof (ServerList),null,at);
			CallSeq.Add ("<< Creating instance");
			RunTestObject (list);
			CallSeq.Add ("<< TestNewContext");
			CallSeq.Check (Checks.seqNewContext,1);
		}

		[Test]
		[Category ("NotWorking")] // disabled as it got not working by NUnit upgrade to 2.4.8
		public void TestRemoteContext ()
		{
			AppDomain domain = BaseCallTest.CreateDomain ("test");
			DomainServer server = (DomainServer) domain.CreateInstanceAndUnwrap(GetType().Assembly.FullName,"MonoTests.Remoting.DomainServer");
			try
			{
				CallSeq.Init("TestRemoteContext");
				CallSeq.Add (">> TestRemoteContext");
				object[] at = new object[] { new ContextHookAttribute ("1",true), new UrlAttribute ("tcp://localhost:1122")};
				CallSeq.Add (">> Creating instance");
				ServerList list = (ServerList) Activator.CreateInstance (typeof (ServerList),null,at);
				CallSeq.Add ("<< Creating instance");
				RunTestObject (list);
				CallSeq.Add ("<< TestRemoteContext");
				CallSeq.Check (Checks.seqRemoteContext,1);

				CallSeq.Init ("TestRemoteContext Server");
				CallSeq.Seq = server.GetRemoteSeq ();
				CallSeq.Check (Checks.seqRemoteContext,2);
			}
			catch (Exception ex)
			{
				Console.WriteLine (ex);
				throw ex;
			}
			finally
			{
				server.Stop ();
			}
//			AppDomain.Unload (domain);
		}

		void RunTestObject (ServerList list)
		{
			DynProperty prop1 = new DynProperty("defcontext");
			DynProperty prop2 = new DynProperty("proxy");

			try
			{
				Context.RegisterDynamicProperty (prop1, null, Context.DefaultContext);
				Context.RegisterDynamicProperty (prop2, list, null);

				CallSeq.Add(">> Clear");
				list.GetType().GetMethod ("Clear").Invoke (list, null);
				CallSeq.Add("<< Clear");

				CallSeq.Add(">> Set fields");
				list.NumVal = 4;
				list.StrVal = "hi";
				CallSeq.Add("<< Set fields");

				CallSeq.Add(">> Get fields");
				int nv = list.NumVal;
				string sv = list.StrVal;
				CallSeq.Add("<< Get fields");
				CallSeq.Add ("Get fields Result: " + nv + " / " + sv);

				CallSeq.Add(">> ParameterTest1");
				string b;
				list.ParameterTest1 (112, out b);
				CallSeq.Add("<< ParameterTest1");
				CallSeq.Add("ParameterTest1 Result: " + b);

				CallSeq.Add(">> ParameterTest2");
				int bn;
				list.ParameterTest2 (112, out bn);
				CallSeq.Add("<< ParameterTest2");
				CallSeq.Add("ParameterTest2 Result: " + bn);

				// These are remote calls that return references to remote objects

				CallSeq.Add (">> Creating two remote items");
				ServerObject item0 = list.CreateItem ("S0", 33);

				item0.SetValue (55);
				list.Add (item0);

				ServerObject item1 = list.NewItem ("S1");
				item1.SetValue (111);
				ServerObject item2 = list.NewItem ("S2");
				item2.SetValue (222);
				CallSeq.Add ("<< Creating two remote items");

				// Two objects created in this client app

				CallSeq.Add (">> Creating two client items");
				ServerObject item3 = new ServerObject ("C1");
				item3.SetValue (333);
				ServerObject item4 = new ServerObject ("C2");
				item4.SetValue (444);
				CallSeq.Add ("<< Creating two client items");

				// Object references passed to the remote list

				CallSeq.Add (">> Adding items");
				list.Add (item3);
				list.Add (item4);
				CallSeq.Add ("<< Adding items");

				// This sums all values of the ServerObjects in the list. The server
				// makes a remote call to this client to get the value of the
				// objects created locally

				CallSeq.Add (">> Processing items");
				list.ProcessItems ();
				CallSeq.Add ("<< Processing items");
			}
			catch (Exception ex)
			{
				Console.WriteLine ("ERR:" + ex.ToString());
				throw;
			}
			
			Context.UnregisterDynamicProperty ("defcontext", null, Context.DefaultContext);
			Context.UnregisterDynamicProperty ("proxy", list, null);
		}
	}

	class DomainServer: MarshalByRefObject
	{
		TcpChannel ch;
		
		public DomainServer()
		{
			CallSeq.CommonDomainId = 2;
			try
			{
				ch = new TcpChannel(1122);
				ChannelServices.RegisterChannel (ch);

				RemotingConfiguration.RegisterActivatedServiceType (typeof (ServerList));
				RemotingConfiguration.RegisterActivatedServiceType (typeof (ServerObject));
			}
			catch (Exception ex)
			{
				Console.WriteLine (ex.ToString());
				throw;
			}
		}

		public ArrayList GetRemoteSeq()
		{
			return CallSeq.Seq;
		}

		public void Stop ()
		{
			if (ch != null)
				ChannelServices.UnregisterChannel (ch);
		}
	}

	class Checks
	{
		public static string[] seqSameContext = 
			{
				"001 (d1,c0) >> TestSameContext",
				"002 (d1,c0) >> Creating instance",
				"003 (d1,c0) ContextHookAttribute(x.d1).IsContextOK",
				"004 (d1,c0) List created",
				"005 (d1,c0) << Creating instance",
				"006 (d1,c0) IContributeDynamicSink(defcontext).GetDynamicSink",
				"007 (d1,c0) IContributeDynamicSink(proxy).GetDynamicSink",
				"008 (d1,c0) >> Clear",
				"009 (d1,c0) Clearing",
				"010 (d1,c0) << Clear",
				"011 (d1,c0) >> Set fields",
				"012 (d1,c0) << Set fields",
				"013 (d1,c0) >> Get fields",
				"014 (d1,c0) << Get fields",
				"015 (d1,c0) Get fields Result: 4 / hi",
				"016 (d1,c0) >> ParameterTest1",
				"017 (d1,c0) << ParameterTest1",
				"018 (d1,c0) ParameterTest1 Result: adeu 112",
				"019 (d1,c0) >> ParameterTest2",
				"020 (d1,c0) << ParameterTest2",
				"021 (d1,c0) ParameterTest2 Result: 113",
				"022 (d1,c0) >> Creating two remote items",
				"023 (d1,c0) ServerObject S0: setting 33",
				"024 (d1,c0) ServerObject S0: setting 55",
				"025 (d1,c0) Added S0",
				"026 (d1,c0) Added S1",
				"027 (d1,c0) ServerObject S1: setting 111",
				"028 (d1,c0) Added S2",
				"029 (d1,c0) ServerObject S2: setting 222",
				"030 (d1,c0) << Creating two remote items",
				"031 (d1,c0) >> Creating two client items",
				"032 (d1,c0) ServerObject C1: setting 333",
				"033 (d1,c0) ServerObject C2: setting 444",
				"034 (d1,c0) << Creating two client items",
				"035 (d1,c0) >> Adding items",
				"036 (d1,c0) Added C1",
				"037 (d1,c0) Added C2",
				"038 (d1,c0) << Adding items",
				"039 (d1,c0) >> Processing items",
				"040 (d1,c0) Processing",
				"041 (d1,c0) ServerObject S0: getting 55",
				"042 (d1,c0) ServerObject S1: getting 111",
				"043 (d1,c0) ServerObject S2: getting 222",
				"044 (d1,c0) ServerObject C1: getting 333",
				"045 (d1,c0) ServerObject C2: getting 444",
				"046 (d1,c0) Total: 1165",
				"047 (d1,c0) << Processing items",
				"048 (d1,c0) << TestSameContext",
		};

		public static string[] seqNewContext =
			{
				"001 (d1,c0) >> TestNewContext",
				"002 (d1,c0) >> Creating instance",
				"003 (d1,c0) ContextHookAttribute(1.d1).IsContextOK",
				"004 (d1,c0) IContextAttribute(1.d1).GetPropertiesForNewContext",
				"005 (d1,c0) IContextAttribute(x.d1).GetPropertiesForNewContext",
				"006 (d1,c0) <-> global DynamicSink Start .ctor client:True",
				"007 (d1,c0) ContextHookAttribute(1.d1).Freeze",
				"008 (d1,c0) ContextHookAttribute(x.d1).Freeze",
				"009 (d1,c0) ContextHookAttribute(1.d1).IsNewContextOK",
				"010 (d1,c0) ContextHookAttribute(x.d1).IsNewContextOK",
				"011 (d1,c1) IContributeServerContextSink(x.d1).GetServerContextSink",
				"012 (d1,c1) IContributeServerContextSink(1.d1).GetServerContextSink",
				"013 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage .ctor",
				"014 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage .ctor",
				
				// Changed the order. I think this is a safe chenge, since it is
				// not defined where the call to GetEnvoySink should be made.
				"015 (d1,c1) IContributeEnvoySink(1.d1).GetEnvoySink",
				"016 (d1,c1) IContributeEnvoySink(x.d1).GetEnvoySink",
				"017 (d1,c1) List created",
				
/*				"015 (d1,c1) List created",
				"016 (d1,c1) IContributeEnvoySink(1.d1).GetEnvoySink",
				"017 (d1,c1) IContributeEnvoySink(x.d1).GetEnvoySink",
*/				
				"018 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage .ctor",
				"019 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage .ctor",
				"020 (d1,c0) <-> global DynamicSink Finish .ctor client:True",
				"021 (d1,c0) << Creating instance",
				"022 (d1,c0) IContributeDynamicSink(defcontext).GetDynamicSink",
				"023 (d1,c0) IContributeDynamicSink(proxy).GetDynamicSink",
				"024 (d1,c0) >> Clear",
				"025 (d1,c0) <-> proxy DynamicSink Start Clear client:True",
				"026 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage Clear",
				"027 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage Clear",
				"028 (d1,c0) <-> global DynamicSink Start Clear client:True",
				"029 (d1,c0) <-> defcontext DynamicSink Start Clear client:True",
				"030 (d1,c1) <-> global DynamicSink Start Clear client:False",
				"031 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage Clear",
				"032 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage Clear",
				"033 (d1,c1) IContributeObjectSink(x.d1).GetObjectSink",
				"034 (d1,c1) IContributeObjectSink(1.d1).GetObjectSink",
				"035 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage Clear",
				"036 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage Clear",
				"037 (d1,c1) Clearing",
				"038 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage Clear",
				"039 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage Clear",
				"040 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage Clear",
				"041 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage Clear",
				"042 (d1,c1) <-> global DynamicSink Finish Clear client:False",
				"043 (d1,c0) <-> global DynamicSink Finish Clear client:True",
				"044 (d1,c0) <-> defcontext DynamicSink Finish Clear client:True",
				"045 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage Clear",
				"046 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage Clear",
				"047 (d1,c0) <-> proxy DynamicSink Finish Clear client:True",
				"048 (d1,c0) << Clear",
				"049 (d1,c0) >> Set fields",
				"050 (d1,c0) <-> proxy DynamicSink Start FieldSetter client:True",
				"051 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage FieldSetter",
				"052 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage FieldSetter",
				"053 (d1,c0) <-> global DynamicSink Start FieldSetter client:True",
				"054 (d1,c0) <-> defcontext DynamicSink Start FieldSetter client:True",
				"055 (d1,c1) <-> global DynamicSink Start FieldSetter client:False",
				"056 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage FieldSetter",
				"057 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage FieldSetter",
				"058 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage FieldSetter",
				"059 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage FieldSetter",
				"060 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage FieldSetter",
				"061 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage FieldSetter",
				"062 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage FieldSetter",
				"063 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage FieldSetter",
				"064 (d1,c1) <-> global DynamicSink Finish FieldSetter client:False",
				"065 (d1,c0) <-> global DynamicSink Finish FieldSetter client:True",
				"066 (d1,c0) <-> defcontext DynamicSink Finish FieldSetter client:True",
				"067 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage FieldSetter",
				"068 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage FieldSetter",
				"069 (d1,c0) <-> proxy DynamicSink Finish FieldSetter client:True",
				"070 (d1,c0) <-> proxy DynamicSink Start FieldSetter client:True",
				"071 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage FieldSetter",
				"072 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage FieldSetter",
				"073 (d1,c0) <-> global DynamicSink Start FieldSetter client:True",
				"074 (d1,c0) <-> defcontext DynamicSink Start FieldSetter client:True",
				"075 (d1,c1) <-> global DynamicSink Start FieldSetter client:False",
				"076 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage FieldSetter",
				"077 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage FieldSetter",
				"078 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage FieldSetter",
				"079 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage FieldSetter",
				"080 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage FieldSetter",
				"081 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage FieldSetter",
				"082 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage FieldSetter",
				"083 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage FieldSetter",
				"084 (d1,c1) <-> global DynamicSink Finish FieldSetter client:False",
				"085 (d1,c0) <-> global DynamicSink Finish FieldSetter client:True",
				"086 (d1,c0) <-> defcontext DynamicSink Finish FieldSetter client:True",
				"087 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage FieldSetter",
				"088 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage FieldSetter",
				"089 (d1,c0) <-> proxy DynamicSink Finish FieldSetter client:True",
				"090 (d1,c0) << Set fields",
				"091 (d1,c0) >> Get fields",
				"092 (d1,c0) <-> proxy DynamicSink Start FieldGetter client:True",
				"093 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage FieldGetter",

				"094 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage FieldGetter",
				"095 (d1,c0) <-> global DynamicSink Start FieldGetter client:True",
				"096 (d1,c0) <-> defcontext DynamicSink Start FieldGetter client:True",
				"097 (d1,c1) <-> global DynamicSink Start FieldGetter client:False",
				"098 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage FieldGetter",
				"099 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage FieldGetter",
				"100 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage FieldGetter",
				"101 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage FieldGetter",
				"102 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage FieldGetter",
				"103 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage FieldGetter",
				"104 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage FieldGetter",
				"105 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage FieldGetter",
				"106 (d1,c1) <-> global DynamicSink Finish FieldGetter client:False",
				"107 (d1,c0) <-> global DynamicSink Finish FieldGetter client:True",
				"108 (d1,c0) <-> defcontext DynamicSink Finish FieldGetter client:True",
				"109 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage FieldGetter",
				"110 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage FieldGetter",
				"111 (d1,c0) <-> proxy DynamicSink Finish FieldGetter client:True",
				"112 (d1,c0) <-> proxy DynamicSink Start FieldGetter client:True",
				"113 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage FieldGetter",
				"114 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage FieldGetter",
				"115 (d1,c0) <-> global DynamicSink Start FieldGetter client:True",
				"116 (d1,c0) <-> defcontext DynamicSink Start FieldGetter client:True",
				"117 (d1,c1) <-> global DynamicSink Start FieldGetter client:False",
				"118 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage FieldGetter",
				"119 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage FieldGetter",
				"120 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage FieldGetter",
				"121 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage FieldGetter",

				"122 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage FieldGetter",
				"123 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage FieldGetter",
				"124 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage FieldGetter",
				"125 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage FieldGetter",
				"126 (d1,c1) <-> global DynamicSink Finish FieldGetter client:False",
				"127 (d1,c0) <-> global DynamicSink Finish FieldGetter client:True",
				"128 (d1,c0) <-> defcontext DynamicSink Finish FieldGetter client:True",
				"129 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage FieldGetter",
				"130 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage FieldGetter",
				"131 (d1,c0) <-> proxy DynamicSink Finish FieldGetter client:True",
				"132 (d1,c0) << Get fields",
				"133 (d1,c0) Get fields Result: 4 / hi",
				"134 (d1,c0) >> ParameterTest1",
				"135 (d1,c0) <-> proxy DynamicSink Start ParameterTest1 client:True",
				"136 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage ParameterTest1",
				"137 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage ParameterTest1",
				"138 (d1,c0) <-> global DynamicSink Start ParameterTest1 client:True",
				"139 (d1,c0) <-> defcontext DynamicSink Start ParameterTest1 client:True",
				"140 (d1,c1) <-> global DynamicSink Start ParameterTest1 client:False",
				"141 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage ParameterTest1",
				"142 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage ParameterTest1",
				"143 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage ParameterTest1",
				"144 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage ParameterTest1",
				"145 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage ParameterTest1",
				"146 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage ParameterTest1",
				"147 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage ParameterTest1",
				"148 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage ParameterTest1",
				"149 (d1,c1) <-> global DynamicSink Finish ParameterTest1 client:False",
				"150 (d1,c0) <-> global DynamicSink Finish ParameterTest1 client:True",
				"151 (d1,c0) <-> defcontext DynamicSink Finish ParameterTest1 client:True",
				"152 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage ParameterTest1",
				"153 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage ParameterTest1",
				"154 (d1,c0) <-> proxy DynamicSink Finish ParameterTest1 client:True",
				"155 (d1,c0) << ParameterTest1",
				"156 (d1,c0) ParameterTest1 Result: adeu 112",
				"157 (d1,c0) >> ParameterTest2",
				"158 (d1,c0) <-> proxy DynamicSink Start ParameterTest2 client:True",
				"159 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage ParameterTest2",
				"160 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage ParameterTest2",
				"161 (d1,c0) <-> global DynamicSink Start ParameterTest2 client:True",
				"162 (d1,c0) <-> defcontext DynamicSink Start ParameterTest2 client:True",
				"163 (d1,c1) <-> global DynamicSink Start ParameterTest2 client:False",
				"164 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage ParameterTest2",

				"165 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage ParameterTest2",
				"166 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage ParameterTest2",
				"167 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage ParameterTest2",
				"168 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage ParameterTest2",
				"169 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage ParameterTest2",
				"170 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage ParameterTest2",
				"171 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage ParameterTest2",
				"172 (d1,c1) <-> global DynamicSink Finish ParameterTest2 client:False",
				"173 (d1,c0) <-> global DynamicSink Finish ParameterTest2 client:True",
				"174 (d1,c0) <-> defcontext DynamicSink Finish ParameterTest2 client:True",
				"175 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage ParameterTest2",
				"176 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage ParameterTest2",
				"177 (d1,c0) <-> proxy DynamicSink Finish ParameterTest2 client:True",
				"178 (d1,c0) << ParameterTest2",
				"179 (d1,c0) ParameterTest2 Result: 113",
				"180 (d1,c0) >> Creating two remote items",
				"181 (d1,c0) <-> proxy DynamicSink Start CreateItem client:True",
				"182 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage CreateItem",
				"183 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage CreateItem",
				"184 (d1,c0) <-> global DynamicSink Start CreateItem client:True",
				"185 (d1,c0) <-> defcontext DynamicSink Start CreateItem client:True",
				"186 (d1,c1) <-> global DynamicSink Start CreateItem client:False",
				"187 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage CreateItem",
				"188 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage CreateItem",
				"189 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage CreateItem",
				"190 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage CreateItem",
				"191 (d1,c1) ServerObject S0: setting 33",
				"192 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage CreateItem",
				"193 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage CreateItem",
				"194 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage CreateItem",
				"195 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage CreateItem",
				"196 (d1,c1) <-> global DynamicSink Finish CreateItem client:False",
				"197 (d1,c0) <-> global DynamicSink Finish CreateItem client:True",
				"198 (d1,c0) <-> defcontext DynamicSink Finish CreateItem client:True",
				"199 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage CreateItem",
				"200 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage CreateItem",
				"201 (d1,c0) <-> proxy DynamicSink Finish CreateItem client:True",
				"202 (d1,c0) ServerObject S0: setting 55",
				"203 (d1,c0) <-> proxy DynamicSink Start Add client:True",
				"204 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage Add",
				"205 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage Add",
				"206 (d1,c0) <-> global DynamicSink Start Add client:True",
				"207 (d1,c0) <-> defcontext DynamicSink Start Add client:True",
				"208 (d1,c1) <-> global DynamicSink Start Add client:False",
				"209 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage Add",
				"210 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage Add",
				"211 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage Add",
				"212 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage Add",
				"213 (d1,c1) Added S0",
				"214 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage Add",
				"215 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage Add",
				"216 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage Add",
				"217 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage Add",
				"218 (d1,c1) <-> global DynamicSink Finish Add client:False",
				"219 (d1,c0) <-> global DynamicSink Finish Add client:True",
				"220 (d1,c0) <-> defcontext DynamicSink Finish Add client:True",
				"221 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage Add",
				"222 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage Add",
				"223 (d1,c0) <-> proxy DynamicSink Finish Add client:True",
				"224 (d1,c0) <-> proxy DynamicSink Start NewItem client:True",
				"225 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage NewItem",
				"226 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage NewItem",
				"227 (d1,c0) <-> global DynamicSink Start NewItem client:True",
				"228 (d1,c0) <-> defcontext DynamicSink Start NewItem client:True",
				"229 (d1,c1) <-> global DynamicSink Start NewItem client:False",
				"230 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage NewItem",
				"231 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage NewItem",
				"232 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage NewItem",
				"233 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage NewItem",
				"234 (d1,c1) Added S1",
				"235 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage NewItem",
				"236 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage NewItem",
				"237 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage NewItem",
				"238 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage NewItem",
				"239 (d1,c1) <-> global DynamicSink Finish NewItem client:False",
				"240 (d1,c0) <-> global DynamicSink Finish NewItem client:True",
				"241 (d1,c0) <-> defcontext DynamicSink Finish NewItem client:True",
				"242 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage NewItem",
				"243 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage NewItem",
				"244 (d1,c0) <-> proxy DynamicSink Finish NewItem client:True",
				"245 (d1,c0) ServerObject S1: setting 111",
				"246 (d1,c0) <-> proxy DynamicSink Start NewItem client:True",
				"247 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage NewItem",
				"248 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage NewItem",
				"249 (d1,c0) <-> global DynamicSink Start NewItem client:True",
				"250 (d1,c0) <-> defcontext DynamicSink Start NewItem client:True",
				"251 (d1,c1) <-> global DynamicSink Start NewItem client:False",
				"252 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage NewItem",
				"253 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage NewItem",
				"254 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage NewItem",
				"255 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage NewItem",
				"256 (d1,c1) Added S2",
				"257 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage NewItem",
				"258 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage NewItem",
				"259 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage NewItem",
				"260 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage NewItem",
				"261 (d1,c1) <-> global DynamicSink Finish NewItem client:False",
				"262 (d1,c0) <-> global DynamicSink Finish NewItem client:True",
				"263 (d1,c0) <-> defcontext DynamicSink Finish NewItem client:True",
				"264 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage NewItem",
				"265 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage NewItem",
				"266 (d1,c0) <-> proxy DynamicSink Finish NewItem client:True",
				"267 (d1,c0) ServerObject S2: setting 222",
				"268 (d1,c0) << Creating two remote items",
				"269 (d1,c0) >> Creating two client items",
				"270 (d1,c0) ServerObject C1: setting 333",
				"271 (d1,c0) ServerObject C2: setting 444",
				"272 (d1,c0) << Creating two client items",
				"273 (d1,c0) >> Adding items",
				"274 (d1,c0) <-> proxy DynamicSink Start Add client:True",
				"275 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage Add",
				"276 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage Add",
				"277 (d1,c0) <-> global DynamicSink Start Add client:True",
				"278 (d1,c0) <-> defcontext DynamicSink Start Add client:True",
				"279 (d1,c1) <-> global DynamicSink Start Add client:False",
				"280 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage Add",
				"281 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage Add",
				"282 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage Add",
				"283 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage Add",
				"284 (d1,c1) Added C1",
				"285 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage Add",
				"286 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage Add",
				"287 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage Add",
				"288 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage Add",
				"289 (d1,c1) <-> global DynamicSink Finish Add client:False",
				"290 (d1,c0) <-> global DynamicSink Finish Add client:True",
				"291 (d1,c0) <-> defcontext DynamicSink Finish Add client:True",
				"292 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage Add",
				"293 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage Add",
				"294 (d1,c0) <-> proxy DynamicSink Finish Add client:True",
				"295 (d1,c0) <-> proxy DynamicSink Start Add client:True",
				"296 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage Add",
				"297 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage Add",
				"298 (d1,c0) <-> global DynamicSink Start Add client:True",
				"299 (d1,c0) <-> defcontext DynamicSink Start Add client:True",
				"300 (d1,c1) <-> global DynamicSink Start Add client:False",
				"301 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage Add",
				"302 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage Add",

				"303 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage Add",
				"304 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage Add",
				"305 (d1,c1) Added C2",
				"306 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage Add",
				"307 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage Add",
				"308 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage Add",
				"309 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage Add",
				"310 (d1,c1) <-> global DynamicSink Finish Add client:False",
				"311 (d1,c0) <-> global DynamicSink Finish Add client:True",
				"312 (d1,c0) <-> defcontext DynamicSink Finish Add client:True",
				"313 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage Add",
				"314 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage Add",
				"315 (d1,c0) <-> proxy DynamicSink Finish Add client:True",
				"316 (d1,c0) << Adding items",
				"317 (d1,c0) >> Processing items",
				"318 (d1,c0) <-> proxy DynamicSink Start ProcessItems client:True",
				"319 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage ProcessItems",
				"320 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage ProcessItems",
				"321 (d1,c0) <-> global DynamicSink Start ProcessItems client:True",
				"322 (d1,c0) <-> defcontext DynamicSink Start ProcessItems client:True",
				"323 (d1,c1) <-> global DynamicSink Start ProcessItems client:False",
				"324 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage ProcessItems",
				"325 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage ProcessItems",
				"326 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage ProcessItems",
				"327 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage ProcessItems",
				"328 (d1,c1) Processing",
				"329 (d1,c1) ServerObject S0: getting 55",
				"330 (d1,c1) ServerObject S1: getting 111",
				"331 (d1,c1) ServerObject S2: getting 222",
				"332 (d1,c1) ServerObject C1: getting 333",
				"333 (d1,c1) ServerObject C2: getting 444",
				"334 (d1,c1) Total: 1165",
				"335 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage ProcessItems",
				"336 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage ProcessItems",
				"337 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage ProcessItems",
				"338 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage ProcessItems",
				"339 (d1,c1) <-> global DynamicSink Finish ProcessItems client:False",
				"340 (d1,c0) <-> global DynamicSink Finish ProcessItems client:True",
				"341 (d1,c0) <-> defcontext DynamicSink Finish ProcessItems client:True",

				"342 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage ProcessItems",
				"343 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage ProcessItems",
				"344 (d1,c0) <-> proxy DynamicSink Finish ProcessItems client:True",
				"345 (d1,c0) << Processing items",
				"346 (d1,c0) << TestNewContext",
		};

		public static string[] seqRemoteContext =
			{
				"001 (d1,c0) >> TestRemoteContext",
				"002 (d1,c0) >> Creating instance",
				"003 (d1,c0) IContextAttribute(1.d1).GetPropertiesForNewContext",
				"004 (d1,c0) IContextAttribute(x.d1).GetPropertiesForNewContext",
				"005 (d1,c0) <-> global DynamicSink Start .ctor client:True",
				"006 (d1,c0) <-> global DynamicSink Start Activate client:True",
				"001 (d2,c0) IContextAttribute(x.d2).GetPropertiesForNewContext",
				"002 (d2,c0) ContextHookAttribute(1.d1).Freeze",
				"003 (d2,c0) ContextHookAttribute(x.d1).Freeze",
				"004 (d2,c0) ContextHookAttribute(x.d2).Freeze",
				"005 (d2,c0) ContextHookAttribute(1.d1).IsNewContextOK",
				"006 (d2,c0) ContextHookAttribute(x.d1).IsNewContextOK",
				"007 (d2,c0) ContextHookAttribute(x.d2).IsNewContextOK",
				"008 (d2,c1) IContributeServerContextSink(x.d2).GetServerContextSink",
				"009 (d2,c1) IContributeServerContextSink(x.d1).GetServerContextSink",
				"010 (d2,c1) IContributeServerContextSink(1.d1).GetServerContextSink",
				"011 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage .ctor",
				"012 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage .ctor",
				"013 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage .ctor",	
				"014 (d2,c1) IContributeEnvoySink(1.d1).GetEnvoySink",
				"015 (d2,c1) IContributeEnvoySink(x.d1).GetEnvoySink",
				"016 (d2,c1) IContributeEnvoySink(x.d2).GetEnvoySink",
				"017 (d2,c1) List created",
				"018 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage .ctor",
				"019 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage .ctor",
				"020 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage .ctor",
				"#021 (d2,c0) IContributeObjectSink(x.d2).GetObjectSink",
				"#022 (d2,c0) IContributeObjectSink(x.d1).GetObjectSink",
				"#023 (d2,c0) IContributeObjectSink(1.d1).GetObjectSink",
				"024 (d2,c0) --> EnvoySink(x.d2) SyncProcessMessage InitializeLifetimeService",
				"025 (d2,c0) --> EnvoySink(x.d1) SyncProcessMessage InitializeLifetimeService",
				"026 (d2,c0) --> EnvoySink(1.d1) SyncProcessMessage InitializeLifetimeService",
				"027 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage InitializeLifetimeService",
				"028 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage InitializeLifetimeService",
				"029 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage InitializeLifetimeService",
				"030 (d2,c1) IContributeObjectSink(x.d2).GetObjectSink",
				"031 (d2,c1) IContributeObjectSink(x.d1).GetObjectSink",
				"032 (d2,c1) IContributeObjectSink(1.d1).GetObjectSink",
				"033 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage InitializeLifetimeService",
				"034 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage InitializeLifetimeService",
				"035 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage InitializeLifetimeService",
				"036 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage InitializeLifetimeService",
				"037 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage InitializeLifetimeService",
				"038 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage InitializeLifetimeService",
				"039 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage InitializeLifetimeService",
				"040 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage InitializeLifetimeService",
				"041 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage InitializeLifetimeService",
				"042 (d2,c0) <-- EnvoySink(1.d1) SyncProcessMessage InitializeLifetimeService",
				"043 (d2,c0) <-- EnvoySink(x.d1) SyncProcessMessage InitializeLifetimeService",
				"044 (d2,c0) <-- EnvoySink(x.d2) SyncProcessMessage InitializeLifetimeService",
				"007 (d1,c0) <-> global DynamicSink Finish Activate client:True",
				"008 (d1,c0) <-> global DynamicSink Finish .ctor client:True",
				"009 (d1,c0) << Creating instance",
				"010 (d1,c0) IContributeDynamicSink(defcontext).GetDynamicSink",
				"011 (d1,c0) IContributeDynamicSink(proxy).GetDynamicSink",
				"012 (d1,c0) >> Clear",
				"013 (d1,c0) <-> proxy DynamicSink Start Clear client:True",
				"014 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage Clear",
				"015 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage Clear",
				"016 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage Clear",
				"017 (d1,c0) <-> global DynamicSink Start Clear client:True",
				"018 (d1,c0) <-> defcontext DynamicSink Start Clear client:True",
				"045 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage Clear",
				"046 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage Clear",
				"047 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage Clear",
				"048 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage Clear",
				"049 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage Clear",
				"050 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage Clear",
				"051 (d2,c1) Clearing",
				"052 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage Clear",
				"053 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage Clear",
				"054 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage Clear",
				"055 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage Clear",
				"056 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage Clear",
				"057 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage Clear",
				"019 (d1,c0) <-> global DynamicSink Finish Clear client:True",
				"020 (d1,c0) <-> defcontext DynamicSink Finish Clear client:True",
				"021 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage Clear",
				"022 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage Clear",
				"023 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage Clear",
				"024 (d1,c0) <-> proxy DynamicSink Finish Clear client:True",
				"025 (d1,c0) << Clear",
				"026 (d1,c0) >> Set fields",
				"027 (d1,c0) <-> proxy DynamicSink Start FieldSetter client:True",
				"028 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage FieldSetter",
				"029 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage FieldSetter",
				"030 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage FieldSetter",
				"031 (d1,c0) <-> global DynamicSink Start FieldSetter client:True",
				"032 (d1,c0) <-> defcontext DynamicSink Start FieldSetter client:True",
				"058 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage FieldSetter",
				"059 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage FieldSetter",
				"060 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage FieldSetter",
				"061 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage FieldSetter",
				"062 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage FieldSetter",
				"063 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage FieldSetter",
				"064 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage FieldSetter",
				"065 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage FieldSetter",
				"066 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage FieldSetter",
				"067 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage FieldSetter",
				"068 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage FieldSetter",
				"069 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage FieldSetter",
				"033 (d1,c0) <-> global DynamicSink Finish FieldSetter client:True",
				"034 (d1,c0) <-> defcontext DynamicSink Finish FieldSetter client:True",
				"035 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage FieldSetter",
				"036 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage FieldSetter",

				"037 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage FieldSetter",

				"038 (d1,c0) <-> proxy DynamicSink Finish FieldSetter client:True",
				"039 (d1,c0) <-> proxy DynamicSink Start FieldSetter client:True",
				"040 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage FieldSetter",
				"041 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage FieldSetter",
				"042 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage FieldSetter",
				"043 (d1,c0) <-> global DynamicSink Start FieldSetter client:True",
				"044 (d1,c0) <-> defcontext DynamicSink Start FieldSetter client:True",
				"070 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage FieldSetter",
				"071 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage FieldSetter",
				"072 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage FieldSetter",
				"073 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage FieldSetter",
				"074 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage FieldSetter",
				"075 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage FieldSetter",
				"076 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage FieldSetter",
				"077 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage FieldSetter",
				"078 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage FieldSetter",
				"079 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage FieldSetter",
				"080 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage FieldSetter",
				"081 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage FieldSetter",
				"045 (d1,c0) <-> global DynamicSink Finish FieldSetter client:True",
				"046 (d1,c0) <-> defcontext DynamicSink Finish FieldSetter client:True",
				"047 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage FieldSetter",
				"048 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage FieldSetter",
				"049 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage FieldSetter",
				"050 (d1,c0) <-> proxy DynamicSink Finish FieldSetter client:True",
				"051 (d1,c0) << Set fields",
				"052 (d1,c0) >> Get fields",
				"053 (d1,c0) <-> proxy DynamicSink Start FieldGetter client:True",
				"054 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage FieldGetter",
				"055 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage FieldGetter",
				"056 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage FieldGetter",
				"057 (d1,c0) <-> global DynamicSink Start FieldGetter client:True",
				"058 (d1,c0) <-> defcontext DynamicSink Start FieldGetter client:True",
				"082 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage FieldGetter",
				"083 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage FieldGetter",
				"084 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage FieldGetter",
				"085 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage FieldGetter",
				"086 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage FieldGetter",
				"087 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage FieldGetter",
				"088 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage FieldGetter",
				"089 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage FieldGetter",
				"090 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage FieldGetter",
				"091 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage FieldGetter",
				"092 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage FieldGetter",
				"093 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage FieldGetter",
				"059 (d1,c0) <-> global DynamicSink Finish FieldGetter client:True",
				"060 (d1,c0) <-> defcontext DynamicSink Finish FieldGetter client:True",
				"061 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage FieldGetter",
				"062 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage FieldGetter",
				"063 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage FieldGetter",
				"064 (d1,c0) <-> proxy DynamicSink Finish FieldGetter client:True",
				"065 (d1,c0) <-> proxy DynamicSink Start FieldGetter client:True",
				"066 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage FieldGetter",
				"067 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage FieldGetter",
				"068 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage FieldGetter",
				"069 (d1,c0) <-> global DynamicSink Start FieldGetter client:True",
				"070 (d1,c0) <-> defcontext DynamicSink Start FieldGetter client:True",
				"094 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage FieldGetter",
				"095 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage FieldGetter",
				"096 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage FieldGetter",
				"097 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage FieldGetter",
				"098 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage FieldGetter",
				"099 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage FieldGetter",
				"100 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage FieldGetter",
				"101 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage FieldGetter",
				"102 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage FieldGetter",
				"103 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage FieldGetter",
				"104 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage FieldGetter",
				"105 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage FieldGetter",
				"071 (d1,c0) <-> global DynamicSink Finish FieldGetter client:True",
				"072 (d1,c0) <-> defcontext DynamicSink Finish FieldGetter client:True",
				"073 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage FieldGetter",
				"074 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage FieldGetter",
				"075 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage FieldGetter",
				"076 (d1,c0) <-> proxy DynamicSink Finish FieldGetter client:True",
				"077 (d1,c0) << Get fields",
				"078 (d1,c0) Get fields Result: 4 / hi",
				"079 (d1,c0) >> ParameterTest1",
				"080 (d1,c0) <-> proxy DynamicSink Start ParameterTest1 client:True",
				"081 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage ParameterTest1",
				"082 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage ParameterTest1",
				"083 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage ParameterTest1",
				"084 (d1,c0) <-> global DynamicSink Start ParameterTest1 client:True",
				"085 (d1,c0) <-> defcontext DynamicSink Start ParameterTest1 client:True",
				"106 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage ParameterTest1",
				"107 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage ParameterTest1",
				"108 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage ParameterTest1",
				"109 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage ParameterTest1",
				"110 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage ParameterTest1",
				"111 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage ParameterTest1",
				"112 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage ParameterTest1",
				"113 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage ParameterTest1",
				"114 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage ParameterTest1",
				"115 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage ParameterTest1",
				"116 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage ParameterTest1",
				"117 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage ParameterTest1",
				"086 (d1,c0) <-> global DynamicSink Finish ParameterTest1 client:True",
				"087 (d1,c0) <-> defcontext DynamicSink Finish ParameterTest1 client:True",
				"088 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage ParameterTest1",
				"089 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage ParameterTest1",
				"090 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage ParameterTest1",
				"091 (d1,c0) <-> proxy DynamicSink Finish ParameterTest1 client:True",
				"092 (d1,c0) << ParameterTest1",
				"093 (d1,c0) ParameterTest1 Result: adeu 112",
				"094 (d1,c0) >> ParameterTest2",
				"095 (d1,c0) <-> proxy DynamicSink Start ParameterTest2 client:True",
				"096 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage ParameterTest2",
				"097 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage ParameterTest2",
				"098 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage ParameterTest2",
				"099 (d1,c0) <-> global DynamicSink Start ParameterTest2 client:True",
				"100 (d1,c0) <-> defcontext DynamicSink Start ParameterTest2 client:True",
				"118 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage ParameterTest2",
				"119 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage ParameterTest2",

				"120 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage ParameterTest2",
				"121 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage ParameterTest2",
				"122 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage ParameterTest2",
				"123 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage ParameterTest2",
				"124 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage ParameterTest2",
				"125 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage ParameterTest2",
				"126 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage ParameterTest2",
				"127 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage ParameterTest2",
				"128 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage ParameterTest2",
				"129 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage ParameterTest2",
				"101 (d1,c0) <-> global DynamicSink Finish ParameterTest2 client:True",
				"102 (d1,c0) <-> defcontext DynamicSink Finish ParameterTest2 client:True",
				"103 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage ParameterTest2",
				"104 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage ParameterTest2",
				"105 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage ParameterTest2",
				"106 (d1,c0) <-> proxy DynamicSink Finish ParameterTest2 client:True",
				"107 (d1,c0) << ParameterTest2",
				"108 (d1,c0) ParameterTest2 Result: 113",
				"109 (d1,c0) >> Creating two remote items",
				"110 (d1,c0) <-> proxy DynamicSink Start CreateItem client:True",
				"111 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage CreateItem",
				"112 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage CreateItem",
				"113 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage CreateItem",
				"114 (d1,c0) <-> global DynamicSink Start CreateItem client:True",
				"115 (d1,c0) <-> defcontext DynamicSink Start CreateItem client:True",
				"130 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage CreateItem",
				"131 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage CreateItem",
				"132 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage CreateItem",
				"133 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage CreateItem",
				"134 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage CreateItem",
				"135 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage CreateItem",
				"136 (d2,c1) ServerObject S0: setting 33",
				"137 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage CreateItem",
				"138 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage CreateItem",
				"139 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage CreateItem",
				"140 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage CreateItem",
				"141 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage CreateItem",
				"142 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage CreateItem",
				"143 (d2,c0) ### ServerObject.CreateObjRef",
				"116 (d1,c0) <-> global DynamicSink Finish CreateItem client:True",
				"117 (d1,c0) <-> defcontext DynamicSink Finish CreateItem client:True",
				"118 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage CreateItem",
				"119 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage CreateItem",
				"120 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage CreateItem",
				"121 (d1,c0) <-> proxy DynamicSink Finish CreateItem client:True",
				"122 (d1,c0) <-> global DynamicSink Start SetValue client:True",
				"123 (d1,c0) <-> defcontext DynamicSink Start SetValue client:True",
				"144 (d2,c0) ServerObject S0: setting 55",
				"124 (d1,c0) <-> global DynamicSink Finish SetValue client:True",
				"125 (d1,c0) <-> defcontext DynamicSink Finish SetValue client:True",
				"126 (d1,c0) <-> proxy DynamicSink Start Add client:True",
				"127 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage Add",
				"128 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage Add",
				"129 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage Add",
				"130 (d1,c0) <-> global DynamicSink Start Add client:True",
				"131 (d1,c0) <-> defcontext DynamicSink Start Add client:True",
				"145 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage Add",
				"146 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage Add",
				"147 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage Add",
				"148 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage Add",
				"149 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage Add",
				"150 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage Add",
				"151 (d2,c1) Added S0",
				"152 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage Add",
				"153 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage Add",
				"154 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage Add",
				"155 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage Add",
				"156 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage Add",
				"157 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage Add",
				"132 (d1,c0) <-> global DynamicSink Finish Add client:True",
				"133 (d1,c0) <-> defcontext DynamicSink Finish Add client:True",
				"134 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage Add",
				"135 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage Add",
				"136 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage Add",
				"137 (d1,c0) <-> proxy DynamicSink Finish Add client:True",
				"138 (d1,c0) <-> proxy DynamicSink Start NewItem client:True",
				"139 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage NewItem",
				"140 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage NewItem",
				"141 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage NewItem",
				"142 (d1,c0) <-> global DynamicSink Start NewItem client:True",
				"143 (d1,c0) <-> defcontext DynamicSink Start NewItem client:True",
				"158 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage NewItem",
				"159 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage NewItem",
				"160 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage NewItem",
				"161 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage NewItem",
				"162 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage NewItem",
				"163 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage NewItem",
				"164 (d2,c1) Added S1",
				"165 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage NewItem",
				"166 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage NewItem",
				"167 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage NewItem",
				"168 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage NewItem",
				"169 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage NewItem",
				"170 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage NewItem",
				"171 (d2,c0) ### ServerObject.CreateObjRef",
				"144 (d1,c0) <-> global DynamicSink Finish NewItem client:True",
				"145 (d1,c0) <-> defcontext DynamicSink Finish NewItem client:True",
				"146 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage NewItem",
				"147 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage NewItem",
				"148 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage NewItem",
				"149 (d1,c0) <-> proxy DynamicSink Finish NewItem client:True",
				"150 (d1,c0) <-> global DynamicSink Start SetValue client:True",
				"151 (d1,c0) <-> defcontext DynamicSink Start SetValue client:True",
				"172 (d2,c0) ServerObject S1: setting 111",
				"152 (d1,c0) <-> global DynamicSink Finish SetValue client:True",
				"153 (d1,c0) <-> defcontext DynamicSink Finish SetValue client:True",
				"154 (d1,c0) <-> proxy DynamicSink Start NewItem client:True",
				"155 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage NewItem",
				"156 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage NewItem",
				"157 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage NewItem",
				"158 (d1,c0) <-> global DynamicSink Start NewItem client:True",
				"159 (d1,c0) <-> defcontext DynamicSink Start NewItem client:True",
				"173 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage NewItem",
				"174 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage NewItem",
				"175 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage NewItem",
				"176 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage NewItem",
				"177 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage NewItem",
				"178 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage NewItem",
				"179 (d2,c1) Added S2",
				"180 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage NewItem",
				"181 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage NewItem",
				"182 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage NewItem",
				"183 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage NewItem",
				"184 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage NewItem",
				"185 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage NewItem",
				"186 (d2,c0) ### ServerObject.CreateObjRef",
				"160 (d1,c0) <-> global DynamicSink Finish NewItem client:True",
				"161 (d1,c0) <-> defcontext DynamicSink Finish NewItem client:True",
				"162 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage NewItem",
				"163 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage NewItem",
				"164 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage NewItem",
				"165 (d1,c0) <-> proxy DynamicSink Finish NewItem client:True",
				"166 (d1,c0) <-> global DynamicSink Start SetValue client:True",
				"167 (d1,c0) <-> defcontext DynamicSink Start SetValue client:True",
				"187 (d2,c0) ServerObject S2: setting 222",
				"168 (d1,c0) <-> global DynamicSink Finish SetValue client:True",
				"169 (d1,c0) <-> defcontext DynamicSink Finish SetValue client:True",
				"170 (d1,c0) << Creating two remote items",
				"171 (d1,c0) >> Creating two client items",
				"172 (d1,c0) ServerObject C1: setting 333",
				"173 (d1,c0) ServerObject C2: setting 444",
				"174 (d1,c0) << Creating two client items",
				"175 (d1,c0) >> Adding items",
				"176 (d1,c0) <-> proxy DynamicSink Start Add client:True",
				"177 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage Add",
				"178 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage Add",
				"179 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage Add",
				"180 (d1,c0) <-> global DynamicSink Start Add client:True",
				"181 (d1,c0) <-> defcontext DynamicSink Start Add client:True",
				"182 (d1,c0) ### ServerObject.CreateObjRef",
				"188 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage Add",
				"189 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage Add",
				"190 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage Add",
				"191 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage Add",
				"192 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage Add",
				"193 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage Add",
				"194 (d2,c1) IContributeClientContextSink(1.d1).GetClientContextSink",
				"195 (d2,c1) IContributeClientContextSink(x.d1).GetClientContextSink",
				"196 (d2,c1) IContributeClientContextSink(x.d2).GetClientContextSink",
				"197 (d2,c1) --> ClientContextSink(x.d2) SyncProcessMessage get_Name",
				"198 (d2,c1) --> ClientContextSink(x.d1) SyncProcessMessage get_Name",
				"199 (d2,c1) --> ClientContextSink(1.d1) SyncProcessMessage get_Name",
				"183 (d1,c0) <-> global DynamicSink Start get_Name client:False",
				"184 (d1,c0) <-> defcontext DynamicSink Start get_Name client:False",
				"185 (d1,c0) <-> global DynamicSink Finish get_Name client:False",
				"186 (d1,c0) <-> defcontext DynamicSink Finish get_Name client:False",
				"200 (d2,c1) <-- ClientContextSink(1.d1) SyncProcessMessage get_Name",
				"201 (d2,c1) <-- ClientContextSink(x.d1) SyncProcessMessage get_Name",
				"202 (d2,c1) <-- ClientContextSink(x.d2) SyncProcessMessage get_Name",
				"203 (d2,c1) Added C1",
				"204 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage Add",
				"205 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage Add",
				"206 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage Add",
				"207 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage Add",
				"208 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage Add",
				"209 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage Add",
				"187 (d1,c0) <-> global DynamicSink Finish Add client:True",
				"188 (d1,c0) <-> defcontext DynamicSink Finish Add client:True",
				"189 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage Add",
				"190 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage Add",
				"191 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage Add",
				"192 (d1,c0) <-> proxy DynamicSink Finish Add client:True",
				"193 (d1,c0) <-> proxy DynamicSink Start Add client:True",
				"194 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage Add",
				"195 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage Add",
				"196 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage Add",
				"197 (d1,c0) <-> global DynamicSink Start Add client:True",
				"198 (d1,c0) <-> defcontext DynamicSink Start Add client:True",
				"199 (d1,c0) ### ServerObject.CreateObjRef",
				"210 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage Add",
				"211 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage Add",
				"212 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage Add",
				"213 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage Add",
				"214 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage Add",
				"215 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage Add",
				"216 (d2,c1) --> ClientContextSink(x.d2) SyncProcessMessage get_Name",
				"217 (d2,c1) --> ClientContextSink(x.d1) SyncProcessMessage get_Name",
				"218 (d2,c1) --> ClientContextSink(1.d1) SyncProcessMessage get_Name",
				"200 (d1,c0) <-> global DynamicSink Start get_Name client:False",
				"201 (d1,c0) <-> defcontext DynamicSink Start get_Name client:False",
				"202 (d1,c0) <-> global DynamicSink Finish get_Name client:False",
				"203 (d1,c0) <-> defcontext DynamicSink Finish get_Name client:False",
				"219 (d2,c1) <-- ClientContextSink(1.d1) SyncProcessMessage get_Name",
				"220 (d2,c1) <-- ClientContextSink(x.d1) SyncProcessMessage get_Name",
				"221 (d2,c1) <-- ClientContextSink(x.d2) SyncProcessMessage get_Name",
				"222 (d2,c1) Added C2",
				"223 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage Add",
				"224 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage Add",
				"225 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage Add",
				"226 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage Add",
				"227 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage Add",
				"228 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage Add",
				"204 (d1,c0) <-> global DynamicSink Finish Add client:True",
				"205 (d1,c0) <-> defcontext DynamicSink Finish Add client:True",
				"206 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage Add",
				"207 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage Add",
				"208 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage Add",
				"209 (d1,c0) <-> proxy DynamicSink Finish Add client:True",
				"210 (d1,c0) << Adding items",
				"211 (d1,c0) >> Processing items",
				"212 (d1,c0) <-> proxy DynamicSink Start ProcessItems client:True",
				"213 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage ProcessItems",
				"214 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage ProcessItems",
				"215 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage ProcessItems",
				"216 (d1,c0) <-> global DynamicSink Start ProcessItems client:True",
				"217 (d1,c0) <-> defcontext DynamicSink Start ProcessItems client:True",
				"229 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage ProcessItems",
				"230 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage ProcessItems",
				"231 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage ProcessItems",
				"232 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage ProcessItems",
				"233 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage ProcessItems",
				"234 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage ProcessItems",
				"235 (d2,c1) Processing",
				"236 (d2,c1) ServerObject S0: getting 55",
				"237 (d2,c1) ServerObject S1: getting 111",
				"238 (d2,c1) ServerObject S2: getting 222",
				"239 (d2,c1) --> ClientContextSink(x.d2) SyncProcessMessage GetValue",
				"240 (d2,c1) --> ClientContextSink(x.d1) SyncProcessMessage GetValue",
				"241 (d2,c1) --> ClientContextSink(1.d1) SyncProcessMessage GetValue",
				"218 (d1,c0) <-> global DynamicSink Start GetValue client:False",
				"219 (d1,c0) <-> defcontext DynamicSink Start GetValue client:False",
				"220 (d1,c0) ServerObject C1: getting 333",
				"221 (d1,c0) <-> global DynamicSink Finish GetValue client:False",
				"222 (d1,c0) <-> defcontext DynamicSink Finish GetValue client:False",
				"242 (d2,c1) <-- ClientContextSink(1.d1) SyncProcessMessage GetValue",
				"243 (d2,c1) <-- ClientContextSink(x.d1) SyncProcessMessage GetValue",
				"244 (d2,c1) <-- ClientContextSink(x.d2) SyncProcessMessage GetValue",
				"245 (d2,c1) --> ClientContextSink(x.d2) SyncProcessMessage GetValue",
				"246 (d2,c1) --> ClientContextSink(x.d1) SyncProcessMessage GetValue",
				"247 (d2,c1) --> ClientContextSink(1.d1) SyncProcessMessage GetValue",
				"223 (d1,c0) <-> global DynamicSink Start GetValue client:False",
				"224 (d1,c0) <-> defcontext DynamicSink Start GetValue client:False",
				"225 (d1,c0) ServerObject C2: getting 444",
				"226 (d1,c0) <-> global DynamicSink Finish GetValue client:False",
				"227 (d1,c0) <-> defcontext DynamicSink Finish GetValue client:False",
				"248 (d2,c1) <-- ClientContextSink(1.d1) SyncProcessMessage GetValue",
				"249 (d2,c1) <-- ClientContextSink(x.d1) SyncProcessMessage GetValue",
				"250 (d2,c1) <-- ClientContextSink(x.d2) SyncProcessMessage GetValue",
				"251 (d2,c1) Total: 1165",
				"252 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage ProcessItems",
				"253 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage ProcessItems",
				"254 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage ProcessItems",
				"255 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage ProcessItems",
				"256 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage ProcessItems",
				"257 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage ProcessItems",
				"228 (d1,c0) <-> global DynamicSink Finish ProcessItems client:True",
				"229 (d1,c0) <-> defcontext DynamicSink Finish ProcessItems client:True",
				"230 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage ProcessItems",
				"231 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage ProcessItems",
				"232 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage ProcessItems",
				"233 (d1,c0) <-> proxy DynamicSink Finish ProcessItems client:True",
				"234 (d1,c0) << Processing items",
				"235 (d1,c0) << TestRemoteContext",
		};
	}
}