I have a scenario that asserts two simple facts, then reads a rule file, then fires the rules. One of the rules retracts one of the facts, then modifies another object. An NPE results when things are run as in the attached files.
However, if the rule file is read first, then the facts are asserted, there is no NPE.
Alternatively, if the second rule, the consequence of which retracts one of the facts, is modified so that the retract is the last statement in the consequence, then the NPE does not occur, even if the facts are asserted before the rules are read.