Fix Set#replace to work with all enums, and add specs