There is indeed an omission and the CanSeeTarget code does not check whether or not the target gameobject is deactivated or not. I have just fixed this for all CanSeeTarget versions and attached the files for you here.
Regarding checking a gameobject reference that is later destroyed the best solution for that would be to use a Blackboard Variable for that particular gameobject and check to see if the Variable is null (with the “Blackboard/Check Null” Condition Task) before calling any action that uses that potentially destroyed gameobject. By that same approach, you “Destroy Gameobject” Action Task, will of course also have to use that Variable instead of a direct gameobject reference.