public bool HasFlags(BaseAspect aspect) { if (aspect == null || aspect.Aspects == AspectFlags.None || Aspects == AspectFlags.None) { return(false); } if (Aspects == aspect.Aspects) { return(true); } return(MatchAnyAspect && Aspects.EnumerateValues <AspectFlags>(true).Any(a => a != AspectFlags.None && aspect.Aspects.GetFlag(a))); }