Interseção de dois mapas

Escreva um método que receba dois mapas diferentes. Em cada um, mantenha apenas as chaves que existem em ambas as entradas, preservando os valores originais daquela entrada. Retorne os dois mapas filtrados na mesma ordem dos argumentos.

Exemplos

Program.intersection(Map.of("a", 5, "b", 13, "c", 7), Map.of("b", 5, "c", 8, "d", 91, "e", 99)); // new Map[]{Map.of("b", 13, "c", 7), Map.of("b", 5, "c", 8)}

Program.intersection(Map.of("a", 5, "b", 13, "c", 7), Map.of("c", 9, "d", 8)); // new Map[]{Map.of("c", 7), Map.of("c", 9)}

Program.intersection(Map.of("a", 1, "b", 34), Map.of("c", 9, "d", 8)); // new Map[]{Map.of(), Map.of()}

Observações

Se nenhuma chave for compartilhada, retorne dois mapas vazios.