public new object Clone()
 {
     DeviceList NewList = new DeviceList();
     foreach (TimeDevice item in items)
     {
         NewList.Add((TimeDevice)item.Clone());
     }
     return NewList;
 }
        /// <summary>
        /// Возвращает идентификатор устройства, настроенного на данный материал.
        /// </summary>
        /// <returns>Идентификатор устройства или -1</returns>
        public DeviceList GetFreeDeviceByMatTypeAndAfterTime(int MaterialId, double Time)
        {
            DeviceList ResultList = new DeviceList();

            for (int i = 0; i < Count; i++)
            {
                if (this[i].IsSupportMaterial(MaterialId))
                {
                    if (this[i].Time < Time)
                    {
                        ResultList.Add(this[i]);
                    }
                }
            }

            return ResultList;
        }
        /// <summary>
        /// Возвращает коллекцию свободных в данный момент пил поддерживающих
        /// заданный материал.
        /// </summary>
        /// <param name="MaterialId"></param>
        /// <returns></returns>
        public DeviceList GetFreeDeviceByMatType(int MaterialId)
        {
            DeviceList ResultList = new DeviceList();
            for (int i = 0; i < Count; i++)
            {
                if (this[i].IsSupportMaterial(MaterialId))
                {
                    if (!this[i].IsBusy())
                        ResultList.Add(this[i]);
                }
            }

            return ResultList;
        }