В задаче сказано: "2. Метод createNewApple() должен вызывать метод checkCollision(GameObject) до тех пор, пока координаты apple и любого из сегментов змеи совпадают." Воспринимая условие в лоб, я написал:
private void createNewApple() {
        int x = getRandomNumber(WIDTH);
        int y = getRandomNumber(HEIGHT);

        Apple apple = new Apple(x, y);
        this.apple = apple;

       while (snake.checkCollision(apple)) {
            snake.checkCollision(apple);
        }
    }
В отрывке кода выше метод createNewApple(), пока координаты apple и любого из сегментов змеи совпадают (snake.checkCollision(apple) проверяет, совпадает ли параметр с одной из частей змеи), запускает checkCollision(GameObject) Я понимаю, что это как минимум выглядит странно, и не удивительно, что валидатор это не пропускает. Но мозги уже кипят. Прошу помочь подсказкой, не решением! Возможно, если бы условие звучало более внятно, то я бы догадался...