В общем сделал я изменение в строке if (c != null && c.getName() != null) на if (c == null && c.getName() != null), результат выводится верный, сделано всего 1 изменение != на ==, что условием не запрещено. А валик тут же мне отвечает: вы неправильно сделали, надо было в той же строке if (c != null && c.getName() != null) && на & заменить. Собственно оба варика приводят к тому что мы обращаемся к c.getName() - не существующему и вылетает NullPointerException которую мы успешно ловим. Объясните, в чем я не прав?