// 'Enum' constraint lets us ensure that T is an enum type
// 'struct' constraint is optional but lets us make 'valueToHighlight' nullable
static void PrintAllEnumNames<T>(T? valueToHighlight) where T : struct, Enum {
foreach (var value in (T[]) Enum.GetValues(typeof(T))) {
if (value.Equals(valueToHighlight)) Console.WriteLine($"{value} <----");
else Console.WriteLine(value.ToString());
}
}