Ohne die genaue Implementierung zu kennen, ist es schwer, den Fehler zu finden. Es wird wohl daran liegen, dass du an einer Stelle einen Operator (Vergleich oder is) verwendest, der auf mindestens einer Seite einen komplett instanzierten Ausdruck erwartet.
Beispiel:
- Code: Alles auswählen
X is Y+Z
X kann mit einem festen Wert belegt sein, muss aber nicht. Ist es belegt, vergleicht is, ist X nicht belegt, funktioniert is in gewissem Maße wie eine Zuweisung. Y und Z müssen aber zwangsläufig in dem Moment der Auswertung schon mit einem festen Wert belegt sein.
Das liegt daran, dass es beliebig viele mögliche Werte gibt, die den gesamten Ausdruck wahr machen können, wenn beide Seiten nicht belegt sind. In diesem Falle gibt es auch beliebig viele Möglichkeiten, wenn X belegt ist, aber Y und Z nicht.
Ich vermute, dass du in deinem Programm einen solchen Operator an einer Stelle verwendest, wo noch nicht alles instanziert ist. Wenn der Rest korrekt ist, sollte es reichen, die Reihenfolge der Bedingungen zu ändern.
Stur lächeln und... oh, falscher Pinguin.