Прошу помощи, чтобы понять, что еще нужно, чтобы валидатор принял решение. Я уже зациклился, хотя задача не сложная. Вот условие: Ошибка в equals/hashCode Исправьте ошибки реализаций методов equals и hashCode для класса Solution. Требования: 1. Хешкоды одинаковых объектов должны быть равны. 2. Метод equals должен проверять равен ли переданный объект равен текущему (сравнение через ==). 3. Метод equals должен проверять является ли переданный объект объектом класса Solution. 4. Метод equals должен проверять значения всех полей у переданного объекта и текущего (учти что некоторые из них могут быть равны null). 5. Должно быть обеспечено корректное поведение HashSet с типом элементов Solution. 6. В классе Solution должен быть реализован метод hashCode.
import java.util.Date;

/*
Ошибка в equals/hashCode
*/
public class Solution {
    private int anInt;
    private String string;
    private double aDouble;
    private Date date;
    private Solution solution;

    public Solution(int anInt, String string, double aDouble, Date date, Solution solution) {
        this.anInt = anInt;
        this.string = string;
        this.aDouble = aDouble;
        this.date = date;
        this.solution = solution;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o instanceof Solution) return true;

        Solution solution1 = (Solution) o;


        if (aDouble != 0.0d? aDouble != solution1.aDouble : solution1.aDouble != 0.0d) return false;


        if (anInt != 0 ? anInt != solution1.anInt : solution1.anInt != 0) return false;

        if (date != null ? !date.equals(solution1.date) : solution1.date != null) return false;
if (date == null || solution1.date == null) return  false;
        if (solution != null ? !solution.equals(solution1.solution) : solution1.solution != null) return false;
if (solution == null || solution1.solution == null) return  false;
        if (string != null ? !string.equals(solution1.string) : solution1.string != null) return false;
if (string == null || solution1.string == null) return  false;

       return true;
    }

    @Override
    public int hashCode() {
        int result;
        long temp;
        result = anInt;
        temp = aDouble != +0.0d ? Double.doubleToLongBits(aDouble) : 0L;
        result = 31 * result + (int) (temp ^ (temp >>> 32));
        result = 31 * result + (solution != null ? solution.hashCode() : 0);
        return result;
    }

    public static void main(String[] args) {

    }
}
Это уже далеко не первый вариант, но решение не проходит, хотя, по-моему я проверяю на null.