Iterar instancias de clase enumeradas

¿Hay una forma sencilla de iterar en todas las instancias enumeradas de una clase en Ceilán?

Al igual quevalues() para enums de Java?

abstract class Suit() of hearts | diamonds | clubs | spades {
    shared formal String name; 
}
object spades extends Suit() { name => "Spades"; }
object clubs extends Suit() { name => "Clubs"; }
object diamonds extends Suit() { name => "Diamonds"; }
object hearts extends Suit() { name => "Hearts"; }

Digamos que me gustaría elegir un traje al azar o me gustaría imprimir todos los trajes por sus nombres.

Editar:

Agregando explícitamente todos los trajes a un trabajo iterable, pero tenemos que enumerar todos los valores posibles nuevamente.

{Suit+} suits = {spades, clubs, diamonds, hearts};

¿Alguien puede llegar a algo mejor?

Respuestas a la pregunta(2)

Su respuesta a la pregunta