public static void ProcessCopy(IDefragmentServices services, int sourceID, ISlotCopyHandler
                                       command, ByteArrayBuffer sourceReader)
        {
            int  targetID   = services.StrictMappedID(sourceID);
            Slot targetSlot = services.AllocateTargetSlot(sourceReader.Length());

            services.Mapping().MapId(targetID, targetSlot);
            Db4objects.Db4o.Internal.DefragmentContextImpl context = new Db4objects.Db4o.Internal.DefragmentContextImpl
                                                                         (sourceReader, services);
            command.ProcessCopy(context);
            services.TargetWriteBytes(context, targetSlot.Address());
        }
 /// <summary>only used by old handlers: OpenTypeHandler0, StringHandler0, ArrayHandler0.
 ///     </summary>
 /// <remarks>
 /// only used by old handlers: OpenTypeHandler0, StringHandler0, ArrayHandler0.
 /// Doesn't need to work with modern IdSystems.
 /// </remarks>
 public Slot AllocateTargetSlot(int length)
 {
     return(_services.AllocateTargetSlot(length));
 }
		public static void ProcessCopy(IDefragmentServices services, int sourceID, ISlotCopyHandler
			 command, ByteArrayBuffer sourceReader)
		{
			int targetID = services.StrictMappedID(sourceID);
			Slot targetSlot = services.AllocateTargetSlot(sourceReader.Length());
			services.Mapping().MapId(targetID, targetSlot);
			Db4objects.Db4o.Internal.DefragmentContextImpl context = new Db4objects.Db4o.Internal.DefragmentContextImpl
				(sourceReader, services);
			command.ProcessCopy(context);
			services.TargetWriteBytes(context, targetSlot.Address());
		}