В решении есть код
if (first != null ? !first.equals(solution.first) : solution.first != null) return false;
        return last != null ? last.equals(solution.last) : solution.last == null;
Разве я не прав, что если первый if отработает, то вернёт false и выйдем с метода, а поле last не будет рассмотрено ? Или все return будут отработанны?