public void RemoveItselfAsManager()
        {
            foreach (String resourcename in resources_to_supply)
            {
                ResourceManager resource_manager = getOvermanagerForResource(resourcename).getManagerForVessel(vessel);

                if (resource_manager != null && resource_manager.PartModule == this)
                {
                    resource_manager.UpdatePartModule(null);
                }
            }
        }
        public override void OnFixedUpdate()
        {
            previousFixedDeltaTime = timeWarpFixedDeltaTime;
            timeWarpFixedDeltaTime = TimeWarpFixedDeltaTime;

            updateCounter++;

            if (resources_to_supply == null)
            {
                return;
            }

            foreach (String resourcename in resources_to_supply)
            {
                var overmanager = getOvermanagerForResource(resourcename);

                ResourceManager resource_manager = overmanager != null?overmanager.getManagerForVessel(vessel) : null;

                if (resource_manager == null)
                {
                    resource_manager = createResourceManagerForResource(resourcename);
                    Debug.Log("[KSPI] Creating Resource Manager for Vessel " + vessel.GetName() + " (" + resourcename + ")");
                }

                if (resource_manager != null)
                {
                    if (resource_manager.PartModule == null || resource_manager.PartModule.vessel != this.vessel || resource_manager.Counter < updateCounter)
                    {
                        resource_manager.UpdatePartModule(this);
                    }

                    if (resource_manager.PartModule == this)
                    {
                        resource_manager.update(updateCounter);
                    }
                }
            }

            var priority_manager = getSupplyPriorityManager(this.vessel);

            if (priority_manager != null)
            {
                if (priority_manager.ProcessingPart == null || priority_manager.ProcessingPart.vessel != this.vessel || priority_manager.Counter < updateCounter)
                {
                    priority_manager.UpdatePartModule(this);
                }

                if (priority_manager.ProcessingPart == this)
                {
                    priority_manager.UpdateResourceSuppliables(updateCounter, timeWarpFixedDeltaTime);
                }
            }
        }
        public override void OnFixedUpdate()
        {
            timeWarpFixedDeltaTime = TimeWarpFixedDeltaTime;

            updateCounter++;

            if (resources_to_supply == null)
            {
                return;
            }

            foreach (String resourcename in resources_to_supply)
            {
                var overmanager = getOvermanagerForResource(resourcename);

                ResourceManager resource_manager = null;;

                if (overmanager != null)
                {
                    resource_manager = overmanager.getManagerForVessel(vessel);
                }

                if (resource_manager == null)
                {
                    similarParts     = null;
                    resource_manager = CreateResourceManagerForResource(resourcename);

                    Debug.Log("[KSPI]: ResourceSuppliableModule.OnFixedUpdate created Resourcemanager for Vessel " + vessel.GetName() + " for " + resourcename + " with ResourseManagerId " + resource_manager.Id + " with OvermanagerId" + resource_manager.Id);
                }

                if (resource_manager != null)
                {
                    if (resource_manager.PartModule == null || resource_manager.PartModule.vessel != this.vessel || resource_manager.Counter < updateCounter)
                    {
                        resource_manager.UpdatePartModule(this);
                    }

                    if (resource_manager.PartModule == this)
                    {
                        resource_manager.update(updateCounter);
                    }
                }
            }

            var priority_manager = getSupplyPriorityManager(this.vessel);

            if (priority_manager != null)
            {
                priority_manager.Register(this);

                if (priority_manager.ProcessingPart == null || priority_manager.ProcessingPart.vessel != this.vessel || priority_manager.Counter < updateCounter)
                {
                    priority_manager.UpdatePartModule(this);
                }

                if (priority_manager.ProcessingPart == this)
                {
                    priority_manager.UpdateResourceSuppliables(updateCounter, timeWarpFixedDeltaTime);
                }
            }
        }