def _intersect(self, o):
        """ Returns a sympy.sets.Set of intersection objects,
        if possible. """

        from sympy.sets import Set, FiniteSet, Union
        from sympy.geometry import Point

        try:
            inter = self.intersection(o)
        except __HOLE__:
            # sympy.sets.Set.reduce expects None if an object
            # doesn't know how to simplify
            return None

        # put the points in a FiniteSet
        points = FiniteSet(*[p for p in inter if isinstance(p, Point)])
        non_points = [p for p in inter if not isinstance(p, Point)]

        return Union(*(non_points + [points]))
dataset/ETHPy150Open sympy/sympy/sympy/geometry/entity.py/GeometrySet._intersect