bool RulesConflict(NamingRule r, NamingRule s)
        {
            //they don't match the same kinds at all
            if ((r.MatchKind & s.MatchKind) == 0)
            {
                return(false);
            }

            //one requires something that the other does not
            var matchAllIntersect = r.MatchAllModifiers & s.MatchAllModifiers;

            if (matchAllIntersect != r.MatchAllModifiers && matchAllIntersect != s.MatchAllModifiers)
            {
                return(false);
            }

            if (r.MatchAnyModifiers != 0 && s.MatchAnyModifiers != 0 && (r.MatchAnyModifiers & s.MatchAnyModifiers) == 0)
            {
                return(false);
            }

            //one requires something that the other prohibits
            if ((r.MatchAllModifiers & s.MatchNoModifiers) != 0 || (s.MatchAllModifiers & r.MatchNoModifiers) != 0)
            {
                return(false);
            }

            if (s.MatchAnyModifiers != 0 && (r.MatchNoModifiers & s.MatchAnyModifiers) == s.MatchAnyModifiers)
            {
                return(false);
            }

            if (r.MatchAnyModifiers != 0 && (s.MatchNoModifiers & r.MatchAnyModifiers) == r.MatchAnyModifiers)
            {
                return(false);
            }

            return(true);
        }
		bool RulesConflict (NamingRule r, NamingRule s)
		{
			//they don't match the same kinds at all
			if ((r.MatchKind & s.MatchKind) == 0)
				return false;
			
			//one requires something that the other does not
			var matchAllIntersect = r.MatchAllModifiers & s.MatchAllModifiers;
			if (matchAllIntersect != r.MatchAllModifiers && matchAllIntersect != s.MatchAllModifiers)
				return false;
			
			if (r.MatchAnyModifiers != 0 && s.MatchAnyModifiers != 0 && (r.MatchAnyModifiers & s.MatchAnyModifiers) == 0)
				return false;
			
			//one requires something that the other prohibits
			if ((r.MatchAllModifiers & s.MatchNoModifiers) != 0 || (s.MatchAllModifiers & r.MatchNoModifiers) != 0)
				return false;
			
			if (s.MatchAnyModifiers != 0 && (r.MatchNoModifiers & s.MatchAnyModifiers) == s.MatchAnyModifiers)
				return false;
			
			if (r.MatchAnyModifiers != 0 && (s.MatchNoModifiers & r.MatchAnyModifiers) == r.MatchAnyModifiers)
				return false;
			
			return true;
		}