Этим кодом:
return ((first == other.first || other.first != null && first.equals(other.first))
                && last == other.last || other.last != null && last.equals(other.last));
в 23-24-х строках программы выполняется заявленное условие.