public void GetActiveValuesTests()
        {
            var value   = FlagsEnum.P1 | FlagsEnum.P2;
            var subject = EnumTools.GetActiveValues(value);

            Assert.Contains(FlagsEnum.P1, subject);
            Assert.Contains(FlagsEnum.P2, subject);
            Assert.DoesNotContain(FlagsEnum.P3, subject);
            Assert.DoesNotContain(FlagsEnum.P4, subject);
        }
 /// <summary>
 /// Get collection for key from Enum, if enum has flags,
 /// multiple collections are merge into one
 /// </summary>
 /// <param name="key"></param>
 /// <typeparam name="T"></typeparam>
 /// <returns></returns>
 public IValidatorCollection GetCollection <T>(T key) where T : Enum
 {
     return(EnumTools.GetActiveValues(key)
            .Select(e => GetCollection(e.ToString()))
            .Aggregate((prev, next) => prev is null ? next : prev.MergeCollection(next)));
 }