public bool ScopeIntersects(HashSet<string> otherScope)
        {
            if (this.Scope == null)
            {
                return otherScope == null;
            }

            if (otherScope == null)
            {
                return this.Scope == null;
            }

            return this.Scope.ToLower().Intersect(otherScope.ToLower()).ToArray().Length > 0;
        }
        internal bool ScopeEquals(HashSet<string> otherScope)
        {
            if (this.Scope == null)
            {
                return otherScope == null;
            }

            if (otherScope == null)
            {
                return this.Scope == null;
            }

            if (Scope.Count == otherScope.Count)
            {
                return this.Scope.ToLower().Intersect(otherScope.ToLower()).Count() == this.Scope.Count;
            }

            return false;
        }