public TECProvidedController(TECProvidedController controllerSource, Dictionary <Guid, Guid> guidDictionary = null) : base(controllerSource, guidDictionary)
 {
     this._type = controllerSource.Type;
     foreach (TECIOModule module in controllerSource.IOModules)
     {
         this.IOModules.Add(module);
     }
 }
        public bool CanChangeType(TECControllerType newType)
        {
            if (newType == null)
            {
                return(false);
            }
            TECProvidedController possibleController = new TECProvidedController(newType);
            IOCollection          necessaryIO        = this.UsedIO;
            IOCollection          possibleIO         = possibleController.getPotentialIO() + possibleController.AvailableIO;

            return(possibleIO.Contains(necessaryIO));
        }
        Object IDragDropable.DropData()
        {
            var outController = new TECProvidedController(this);

            return(outController);
        }