code: def dispatch_to_extension_op(op, left, right):
      
  
      # The op calls will raise TypeError if the op is not defined
      # on the ExtensionArray
  
      # unbox Series and Index to arrays
      if isinstance(left, (ABCSeries, ABCIndexClass)):
          new_left = left._values
      else:
          new_left = left
  
      if isinstance(right, (ABCSeries, ABCIndexClass)):
          new_right = right._values
      else:
          new_right = right
  
      res_values = op(new_left, new_right)
      res_name = get_op_result_name(left, right)
  
      if op.__name__ in ['divmod', 'rdivmod']:
          return _construct_divmod_result(
              left, res_values, left.index, res_name)
  
      return _construct_result(left, res_values, left.index, res_name)
docs: Assume that left or right is a Series backed by an ExtensionArray,
      apply the operator defined by op.