Сообщение от
db
сейчас не проверял, но как мне помнится DictClass.makeObject() на модификаторы доступа не смотрит. Т.е. сделать protected new () у NodeContract, а создавать их через фабрику в NodeCreator используя DictClass.makeObject()
Насколько допустимо пользоваться отражением и "особенностями" его работы решайте сами