I've managed to get a behavior tree to do what I want, without having to write a single custom action or conditional task, or custom shared variable. This is in large part due to synchronizing variables and using reflection tasks like invoke method. Is this approach inadvisable from a performance perspective? In particular I'm curious if the slowness associated with reflection in general, would hit performance only once, when these tasks are first run, or every time the behavior tree runs?