public void RemoveRequirement(TagFunctionRequirement requirement)
        {
            if (requirement == null)
            {
                throw new ArgumentNullException(nameof(requirement));
            }

            if (requirement.Plant != Plant)
            {
                throw new ArgumentException($"Can't remove item in {requirement.Plant} from item in {Plant}");
            }

            _requirements.Remove(requirement);
        }
        public void AddRequirement(TagFunctionRequirement requirement)
        {
            if (requirement == null)
            {
                throw new ArgumentNullException(nameof(requirement));
            }

            if (requirement.Plant != Plant)
            {
                throw new ArgumentException($"Can't relate item in {requirement.Plant} to item in {Plant}");
            }

            if (_requirements.Any(r => r.RequirementDefinitionId == requirement.RequirementDefinitionId))
            {
                throw new ArgumentException($"{nameof(TagFunction)} {Code} in register {RegisterCode} already has a requirement with definition {requirement.RequirementDefinitionId}");
            }

            _requirements.Add(requirement);
        }