А... дык, это динамически из кода...
тогда понятно. Будь осторожен - следи за собой
Динамическое самоизменение чревато последствиями на любом языке программирования Даже при программировании машины Тьюринга.
Насчет TreeNode. Я, конечно, не такой опытный в программировании, но думаю, что дело в неправильной инициализации Dict-контекста.