Lógica utilizada no jokenpo em Dart

Ol[a, j[a faz um tempo que eu adquiri o livro de Dart e tem uma parte que eu não entendi como funciona a lógica no jogo pedra papel, tesoura e spock, nesse trecho, o que está sendo feito nesse trecho?

Página 133 a 136 Dart e web

Na classe partida:

“ void criarRegra(String vencedor,
{required String acao, required String perdedor}) {
if (!regras.containsKey(vencedor)) {
regras[vencedor] = {};
}
regras[vencedor]![acao] = perdedor;
}
}”

Trecho de
O guia de Dart
Julio Henrique Bitencourt