private bool IsPrimary(T o)
        {
            if (!this.IsPrimaryCandidateType)
            {
                return(false);
            }

            IPrimaryCandidateObject primaryObject = o as IPrimaryCandidateObject;

            return(primaryObject?.IsPrimary ?? false);
        }
        private bool SetPrimaryCandidate(T o, string type)
        {
            if (!this.IsPrimaryCandidateType)
            {
                return(false);
            }

            IPrimaryCandidateObject primaryObject = o as IPrimaryCandidateObject;

            if (primaryObject != null)
            {
                if (primaryObject.Primary != this.IsPrimaryType(type))
                {
                    primaryObject.Primary = this.IsPrimaryType(type);
                    return(true);
                }
            }

            return(false);
        }