Small bug in the Selection class: the eq operator is defined as "list(self) == list(rhs)". If rhs is then something that can't be coerced into a list (None), it crashes. Maybe add a try:...except:return False?
Also, I'm guessing this is known, but Selection.str doesn't exist. It looks like the WordHighlight plugin is relying on it to see if a view's selection is the same across two runs of a command via "str(sel_a) == str(sel_b)".