Решение прошло проверку, валидатор принял, но непонятно почему на выходе есть строки объектов Cat
public static Set<Object> join(Set<Cat> cats, Set<Dog> dogs) {
        Set<Object> pets = new HashSet<Object>();
        pets.addAll(cats);
        pets.addAll(dogs);
        return pets;
    }

    public static void removeCats(Set<Object> pets, Set<Cat> cats) {
        pets.removeAll(cats);
    }

    public static void printPets(Set<Object> pets) {
        for (Object text : pets){
            System.out.println(text);
        }
    }
Output: com.javarush.task.task08.task0820.Solution$Dog@ca263c2 com.javarush.task.task08.task0820.Solution$Cat@3bbc39f8 com.javarush.task.task08.task0820.Solution$Dog@45f45fa1 com.javarush.task.task08.task0820.Solution$Cat@29f69090 com.javarush.task.task08.task0820.Solution$Cat@568bf312 com.javarush.task.task08.task0820.Solution$Dog@589b3632 com.javarush.task.task08.task0820.Solution$Cat@4ae3c1cd com.javarush.task.task08.task0820.Solution$Dog@ca263c2 com.javarush.task.task08.task0820.Solution$Dog@45f45fa1 com.javarush.task.task08.task0820.Solution$Dog@589b3632