public MyMergeThread(TestMergeSchedulerExternal.MyMergeScheduler outerInstance, IndexWriter writer, MergePolicy.OneMerge merge)
     : base(outerInstance, writer, merge)
 {
     this.OuterInstance = outerInstance;
     outerInstance.OuterInstance.MergeThreadCreated = true;
 }
 protected override MergeThread GetMergeThread(IndexWriter writer, MergePolicy.OneMerge merge)
 {
     MergeThread thread = new MyMergeThread(this, writer, merge);
     thread.ThreadPriority = MergeThreadPriority;
     thread.SetDaemon(true);
     thread.Name = "MyMergeThread";
     return thread;
 }
 protected override void DoMerge(MergePolicy.OneMerge merge)
 {
     OuterInstance.MergeCalled = true;
     base.DoMerge(merge);
 }
			protected /*internal*/ override void  DoMerge(MergePolicy.OneMerge merge)
			{
				Enclosing_Instance.mergeCalled = true;
				base.DoMerge(merge);
			}
			protected /*internal*/ override MergeThread GetMergeThread(IndexWriter writer, MergePolicy.OneMerge merge)
			{
				MergeThread thread = new MyMergeThread(this, writer, merge);
				thread.SetThreadPriority(GetMergeThreadPriority());
				thread.IsBackground = true;
				thread.Name = "MyMergeThread";
				return thread;
			}
				public MyMergeThread(MyMergeScheduler enclosingInstance, IndexWriter writer, MergePolicy.OneMerge merge):base(enclosingInstance, writer, merge)
				{
					InitBlock(enclosingInstance);
					Enclosing_Instance.Enclosing_Instance.mergeThreadCreated = true;
				}