I investigated the StatementNode and Say Action. Why don’t you use there the parameter or class member ‘agent’ (which is the reference to the DialogTree instance)?
Did you do this, because you clone the DialogTree instance in the GetInstance() method?
Static events are used because there can only be one Dialogue Tree playing at a time, thus static events made sense in this case for that reason.
It’s really irrelevant of the fact that a instance is created. 🙂