Решение с реализацией второго метода в следующем виде не проходит валидацию
public static Set<Integer> removeAllNumbersGreaterThan10(Set<Integer> set) {
        for(Integer x: set){
            if(x>10){set.remove(x);}
        }
        return set;
    }
В качестве правильного решения предлагается следующая реализация
public static Set<Integer> removeAllNumbersGreaterThan10(Set<Integer> set) {
        Set<Integer> copy = new HashSet<>(set);
        for(Integer x: copy){
            if(x>10){set.remove(x);}
        }
        return set;
    }
Никак не могу понять, в чем смысл нового списка copy и что меняет его наличие?