Сравнивал с подобными решениями и не могу найти ошибку, помогите пожалуйста. update// Ошибку нашёл, в условиях надо было проверять наличие null во всех родителях. Иначе могут компилироваться сразу несколько условий, и будет выполнено обращение к null, что и вызовет ошибку. Теперь вопрос другого рода, почему в System.out.println() достаточно написать ссылку на объект без вызова метода toString и все равно будет выполнено тело метода?