I think it shouldn't be a method but a function. If it's a method and you call it as `Vector.segment_intersection` and the result is a `Vector` I would expect it to be a *classmethod*, not a *staticmethod*. But a classmethod cannot return None, hence my belief that it should be an helper function.