code: def __getitem__(self, val):
      if isinstance(val, int):
          if 0 > val or val >= self.size:
              raise IndexError("Index out of range")
          return (
              self.list[val]
              if self.size < self.maxsize
              else self.list[(self.offset + val) % self.maxsize]
          )
      elif isinstance(val, slice):
          start, stop, step = val.start, val.stop, val.step
          if step is None:
              step = 1
          if start is None:
              start = 0
          if stop is None:
              stop = self.size
          if start < 0:
              start = self.size + start
          if stop < 0:
              stop = self.size + stop
  
          indices = range(start, stop, step)
          return [
              self.list[(self.offset + i) % self.maxsize]
              for i in indices
              if i < self.size
          ]
      else:
          raise TypeError("Invalid argument type")
  
label_desc: Use image node_id 3 for calling the Circle obj's underlying member method code with example usage: obj.__getitem__(val) and returns: unknown, unknown