¿Cómo decide el envío múltiple de Perl 6 qué rutina usar?

Considere este programa donde construyo una matriz en la lista de argumentos. Aunque hay una firma que acepta una matriz, esta llama a la que acepta una lista:

foo( [ 1, 2, 3 ] );

multi foo ( Array @array ) { put "Called Array @ version" }
multi foo ( Array $array ) { put "Called Array \$ version" }
multi foo ( List $list )   { put "Called List version" }
multi foo ( Range $range ) { put "Called Range version" }

Obtengo el resultado de una rutina inesperada:

Called Array $ version

Si descomento esa otra firma, esa se llama:

Called List version

¿Por qué no llama al( Array @array ) ¿versión? ¿Cómo está tomando la decisión el despachador (y dónde está documentado)?

Respuestas a la pregunta(3)

Su respuesta a la pregunta