Selector nodes are not “if-else” statements!
When making children of a Selector, it’s easy to accidentally assume that since priority is left-to-right, if branch A starts with “If Goal is Set”, then B would only happen “If Goal is not set.”
However, that’s not the case! Any number of other reasons could cause branch A to fail. Perhaps there are other conditionals (either at that level or lower in the tree). Even without any other conditionals, the task itself can fail for some reason.
For example, if you just have “If Goal Is Set”, “Move To Goal”, the “Move To Goal” task could fail due to not finding a path to the goal. In that case, you may still enter Branch B even though Goal is Set.
So, to properly guard against that case (if you want to do something only when the goal is NOT set), you need to add a decorator for “If Goal Is Not Set”. That decorator is NOT redundant!