/// <summary>
        /// Identifies all parameters which do not exist yet as declared values
        /// </summary>
        /// <returns></returns>
        public IEnumerable <ExtractionFilterParameter> GetMissingEntries()
        {
            var existingCatalogueParameters = ExtractionFilter.GetAllParameters().Cast <ExtractionFilterParameter>().ToArray();

            var personalChildren = Values.ToArray();

            foreach (ExtractionFilterParameter catalogueParameter in existingCatalogueParameters)
            {
                if (personalChildren.All(c => c.ExtractionFilterParameter_ID != catalogueParameter.ID))
                {
                    yield return(catalogueParameter);
                }
            }
        }
        /// <summary>
        /// Creates new value entries for each parameter in the filter that does not yet have a value in this value set
        /// </summary>
        /// <returns></returns>
        public ExtractionFilterParameterSetValue[] CreateNewValueEntries()
        {
            List <ExtractionFilterParameterSetValue> toReturn = new List <ExtractionFilterParameterSetValue>();

            var existingMasters = ExtractionFilter.GetAllParameters().Cast <ExtractionFilterParameter>().ToArray();

            var personalChildren = Values.ToArray();

            foreach (ExtractionFilterParameter master in existingMasters)
            {
                if (personalChildren.All(c => c.ExtractionFilterParameter_ID != master.ID))
                {
                    //we have a master that does not have any child values yet
                    toReturn.Add(new ExtractionFilterParameterSetValue((ICatalogueRepository)Repository, this, master));
                }
            }

            return(toReturn.ToArray());
        }