В целом суть задачи ясна. Первый этап -- создать список с ключами и значениями -- легко. Но я не могу понять, что делает метод removeItemFromMapByValue и как именно он работает. Что, куда и зачем туда подаётся, какие параметры и откуда он должен взять? Как их передать? Почему-то именно на этой задаче мозг стабильно отключается. Если кто-нибудь объяснит, что он делает, тогда смогу разобраться с тем, что нужно писать в методе removeTheFirstNameDuplicates.
public class Solution {
    public static HashMap<String, String> createMap() {
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("Shepard", "Kate");
        map.put("Wayne", "Bruce");
        map.put("Gold", "Diane");
        map.put("Olsen", "Wanda");
        map.put("Cullen", "Edward");
        map.put("Allen", "Barry");
        map.put("Kyle", "Kate");
        map.put("Prince", "Diane");
        map.put("Lane", "Lois");
        map.put("Kane", "Kate");
        return map;
    }

    public static void removeTheFirstNameDuplicates(Map<String, String> map) {
        //напишите тут ваш код
    }

    public static void removeItemFromMapByValue(Map<String, String> map, String value) {
        HashMap<String, String> copy = new HashMap<String, String>(map);
        for (Map.Entry<String, String> pair : copy.entrySet()) {
            if (pair.getValue().equals(value))
                map.remove(pair.getKey());
        }
    }

    public static void main(String[] args) {

    }
}