code: def index(self, value, start=0, stop=None):
          
          if start is not None and start < 0:
              start = max(len(self) + start, 0)
          if stop is not None and stop < 0:
              stop += len(self)
  
          try:
              if not isinstance(start, numbers.Integral):
                  start = self.index(start)
              if not isinstance(stop, numbers.Integral):
                  stop = self.index(stop)
          except IndexNotFound:
              raise IntError('slice indices must be integers or have an __index__ method') from None
  
          from pcapkit.protocols.protocol import Protocol
          try:
              flag = issubclass(value, Protocol)
          except TypeError:
              flag = issubclass(type(value), Protocol)
          if flag or isinstance(value, Protocol):
              value = value.__index__()
              if isinstance(value, tuple):
                  value = r'|'.join(value)
  
          try:
              for index, data in enumerate(self.__data__[start:stop]):
                  if re.fullmatch(value, data, re.IGNORECASE):
                      return index
          except Exception:
              raise IndexNotFound(f'{value!r} is not in {self.__class__.__name__!r}')
docs: S.index(value, [start, [stop]]) -> integer -- return first index of value.
             Raises ValueError if the value is not present.
  
             Supporting start and stop arguments is optional, but
             recommended.