code: def intersection_sets(self, o):  # noqa:F811
      """Returns a sympy.sets.Set of intersection objects,
      if possible."""
  
      from sympy.geometry.point import Point
  
      try:
          # if o is a FiniteSet, find the intersection directly
          # to avoid infinite recursion
          if o.is_FiniteSet:
              inter = FiniteSet(*(p for p in o if self.contains(p)))
          else:
              inter = self.intersection(o)
      except NotImplementedError:
          # 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]))
  
imports: from __future__ import annotations
  from sympy.core.basic import Basic
  from sympy.core.containers import Tuple
  from sympy.core.evalf import EvalfMixin, N
  from sympy.core.numbers import oo
  from sympy.core.symbol import Dummy
  from sympy.core.sympify import sympify
  from sympy.functions.elementary.trigonometric import cos, sin, atan
  from sympy.matrices import eye
  from sympy.multipledispatch import dispatch
  from sympy.printing import sstr
  from sympy.sets import Set, Union, FiniteSet
  from sympy.sets.handlers.intersection import intersection_sets
  from sympy.sets.handlers.union import union_sets
  from sympy.solvers.solvers import solve
  from sympy.utilities.misc import func_name
  from sympy.utilities.iterables import is_sequence
label_desc: Use image node_id 2 for calling a global function with example usage: intersection_sets(o) and returns: Union, None