I agree the text is confusing. I have
updated it.
Note, that we don't have an example demonstrating this approach so this is a best-effort advice:
I think that "never" means you should set the shadow variable to a special value indicating that the activity can never start. Null is a good special value. Others could be -1, Integer.MAX_VALUE or similar. In any case, you should have a hard constraint for such condition that will make the solution infeasible. The variable listener loop is a symptom of infeasible chain order. Clearly, if you have Ann{A1, B1} and Bob{B2, A2} it's impossible to execute both As and Bs simultaneously while keeping this order (no matter how hard the variable listener tries to auto-delay their startTimes).
As I said, we don't have an example proving this concept actually works. Please share more details if you get variable listener corruption.
BR,
Jiri