public void MultiStringVirtualHandler()
		{
			CheckDisposed();

			MultiStringVirtualHandler msvh = new MultiStringVirtualHandler("LexDb", "NewString");
			m_fdoCache.InstallVirtualProperty(msvh);
			Assert.IsTrue(msvh.Writeable);
			Assert.AreEqual((int)CellarModuleDefns.kcptMultiString, msvh.Type);
			Assert.IsFalse(msvh.ComputeEveryTime);

			int hvoLexDb = 0;
			if (m_fdoCache.LangProject != null &&
				m_fdoCache.LangProject.LexDbOA != null)
			{
				hvoLexDb = m_fdoCache.LangProject.LexDbOA.Hvo;
			}
			if (hvoLexDb == 0)
			{
				// Rather than try to create a real LexDb, simulate one.
				hvoLexDb = khvoTest;
			}
			ISilDataAccess sda = m_fdoCache.MainCacheAccessor;
			IVwCacheDa cda = sda as IVwCacheDa;
			int wsVern = m_fdoCache.LangProject.DefaultVernacularWritingSystem;
			msvh.Load(hvoLexDb, msvh.Tag, wsVern, cda);
			ITsStrFactory tsf = TsStrFactoryClass.Create();
			ITsString tss = tsf.MakeString("", wsVern);
			ITsString tss1 = sda.get_MultiStringAlt(hvoLexDb, msvh.Tag, wsVern);
			Assert.IsTrue(tss.Equals(tss1));
			Assert.IsTrue(msvh.Writeable);
			tss = tsf.MakeString("This is a test", wsVern);
			msvh.WriteObj(hvoLexDb, msvh.Tag, wsVern, tss, sda);
			cda.CacheStringAlt(hvoLexDb, msvh.Tag, wsVern, tss);
			tss1 = sda.get_MultiStringAlt(hvoLexDb, msvh.Tag, wsVern);
			Assert.IsTrue(tss.Equals(tss1));
		}
		/// <summary>
		/// This will install a virtual handler for getting and setting temporary strings in each column.
		/// </summary>
		private void InstallVirtualHandlersForColumns()
		{
			// handle editableRow attributes
			Debug.Assert(m_xbv != null);
			FdoCache cache = m_xbv.Cache;
			Debug.Assert(cache != null);
			IVwCacheDa cda = cache.MainCacheAccessor as IVwCacheDa;
			// install a handler for each column
			for (int i = 1; i <= m_columns.Count; ++i)
			{
				string sField = ksEditColumnBaseName + i;
				IVwVirtualHandler vh = cda.GetVirtualHandlerName(
					EditRowModelClass, sField);
				if (vh == null)
				{
					MultiStringVirtualHandler msvh =
						new MultiStringVirtualHandler(EditRowModelClass, sField);
					cda.InstallVirtual(msvh);
				}
			}
		}