code: def _searchsorted_monotonic(
      self, label, side: Literal["left", "right"] = "left"
  ):
      if not self.is_non_overlapping_monotonic:
          raise KeyError(
              "can only get slices from an IntervalIndex if bounds are "
              "non-overlapping and all monotonic increasing or decreasing"
          )
  
      if isinstance(label, (IntervalMixin, IntervalIndex)):
          raise NotImplementedError(
              "Interval objects are not currently supported"
          )
  
      # GH 20921: "not is_monotonic_increasing" for the second condition
      # instead of "is_monotonic_decreasing" to account for single element
      # indexes being both increasing and decreasing
      if (side == "left" and self.left.is_monotonic_increasing) or (
          side == "right" and not self.left.is_monotonic_increasing
      ):
          sub_idx = self.right
          if self.open_right:
              label = _get_next_label(label)
      else:
          sub_idx = self.left
          if self.open_left:
              label = _get_prev_label(label)
  
      return sub_idx._searchsorted_monotonic(label, side)
  
imports: from __future__ import annotations
  from operator import le, lt
  import textwrap
  from typing import TYPE_CHECKING, Any, Literal
  import numpy
  from pandas._libs import lib
  from pandas._libs.interval import Interval, IntervalMixin, IntervalTree
  from pandas._libs.tslibs import BaseOffset, Period, Timedelta, Timestamp, to_offset
  from pandas.errors import InvalidIndexError
  from pandas.util._decorators import Appender, cache_readonly
  from pandas.util._exceptions import rewrite_exception
  from pandas.core.dtypes.cast import find_common_type, infer_dtype_from_scalar, maybe_box_datetimelike, maybe_downcast_numeric, maybe_upcast_numeric_to_64bit
  from pandas.core.dtypes.common import ensure_platform_int, is_float_dtype, is_integer, is_integer_dtype, is_list_like, is_number, is_object_dtype, is_scalar, pandas_dtype
  from pandas.core.dtypes.dtypes import DatetimeTZDtype, IntervalDtype
  from pandas.core.dtypes.missing import is_valid_na_for_dtype
  from pandas.core.algorithms import unique
  from pandas.core.arrays.datetimelike import validate_periods
  from pandas.core.arrays.interval import IntervalArray, _interval_shared_docs
  import pandas.core.common
  from pandas.core.indexers import is_valid_positional_slice
  import pandas.core.indexes.base
  from pandas.core.indexes.base import Index, _index_shared_docs, ensure_index, maybe_extract_name
  from pandas.core.indexes.datetimes import DatetimeIndex, date_range
  from pandas.core.indexes.extension import ExtensionIndex, inherit_names
  from pandas.core.indexes.multi import MultiIndex
  from pandas.core.indexes.timedeltas import TimedeltaIndex, timedelta_range
label_desc: Use image node_id 17 for calling the IntervalIndex obj's underlying member method code with example usage: obj._searchsorted_monotonic(label, side) and returns: sub_idx