Como o multi despacho do Perl 6 decide qual rotina usar?

Considere este programa em que construo uma matriz na lista de argumentos. Embora exista uma assinatura que aceite uma matriz, isso chama aquela que aceita uma 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" }

Eu recebo a saída de uma rotina inesperada:

Called Array $ version

Se eu descomentar essa outra assinatura, essa será chamada:

Called List version

Por que não chama o( Array @array ) versão? Como o expedidor está tomando sua decisão (e onde está documentado)?

questionAnswers(3)

yourAnswerToTheQuestion