Removed AbstractUnion#to_a and also refactored.
Renamed Behavior to Protocol.