Почему данная реализация неверна? валидатор принял все пункты кроме строки return
( (first==sol.first)||(first!=null&&first.equals(sol.first))&&((last==sol.last)||(last!=null&&last.equals(sol.last)) )  )
якобы это не учитывает равенство на null
@Override
    public boolean equals(Object n) {
        if (n == this)  return true;
        if (n == null) return false;
        if(n.getClass() != this.getClass()) return  false;
        Solution sol = (Solution) n;
        return ( (first==sol.first)||(first!=null&&first.equals(sol.first))&&((last==sol.last)||(last!=null&&last.equals(sol.last)) )  );

    }