Здравствуйте, Serginio1, Вы писали:
S> Тем, что кой кому не нужен Nullable reference

А вам не приходило в голову задуматься: а
почему этому кой-кому не нужен Nullable Reference? Если не приходило — перечитайте стартовый пост, там всё написано.
S> Но в итоге у него код не пройдет проверку! Так как Next для последнего и Previous для первого будет null!
Именно это и прекрасно. Компилятор потребует от него добавить инициализацию для этих свойств, и только тогда успокоится. Это и есть статическая гарантия того, что в рантайме он никогда не напорется ни на Null, ни на EmptyNode.
S>Никто не мешает добавить свой анализатор без изменения языка!
Ок, предположим, у нас есть такой анализатор. Накидайте пример пользовательского кода с его применением.
S>А использование Empty объекта значительно лучше чем null!
Нет. Восклицательные знаки аргументом в споре не являются. Повторюсь: я знаком с Null Object Pattern и понимаю не только его преимущества, но и недостатки.
В данной задаче этот паттерн противопоказан как раз тем, что мешает компилятору проверять инициализированность. Потому что понятие "Ссылка на Node, для которой запрещено использование null" в компилятор встроено, а "ссылка на Node, для которой запрещено использование EmptyNode" — нет. Это не Алгол.