I am pretty close to understand Generics now (I think). However, just figured that System.Enum is not easy to implement as a generic type. I have this class:
<
Instead of the impossible
button.Identifier == Identifier
you should use
EqualityComparer.Default.Equals(button.Identifier, Identifier)
This avoids boxing the value into an object box (or IComparable box).
object
IComparable