Сейчас уже с ума сойду, что ему может не нравиться? Я уже как только не писал эти проверки Кто-то почему то советует на null проверять так:
(first == solution.first) || (first != null && first.equals(solution.first))
(first == solution.first) Зачем это делать если у нас String? ПС если добавить эту злосчастную строчку (first == solution.first), то начинает пролазить 4 пункт WTF???