Yes, I'm modifying the runtime source code, and the results for FindLCA, IsParentTask, and IsChild will be used to replace the three corresponding methods. I plan to integrate these into BehaviorManager.BehaviorTree, alongside the parentIndex list. If parentIndex does not change after loading, the three 2D arrays would also remain constant.
Based on your code, it seems that these lists—parentIndex, childrenIndex, relativeChildIndex, nonInstantTaskStatus, parentCompositeIndex, and childConditionalIndex—are constant. I'll attempt to make all instances that share the same external behavior use the same array. Additionally, I am not using any parentTask where CanRunParallelChildren = true.
Regarding the Pro version, I’ll definitely try it, but not right now, as I’m unfamiliar with DOTS. Also, in my project, I don't use any GameObjects for the behavior tree, I'm not sure if it will be easy to migrate to the Pro version.