code: def addPointMiddle(self, lineIdx, point):
      if self.is_rect:
          return
      gripItem = GripItem(
          self, lineIdx + 1, self.borderColor, (self.height, self.width)
      )
      gripItem.setEnabled(False)
      gripItem.setPos(point)
      self.scene().addItem(gripItem)
      gripItem.updateSize()
      gripItem.setEnabled(True)
      for grip in self.m_items[lineIdx + 1 :]:
          grip.m_index += 1
      self.m_items.insert(lineIdx + 1, gripItem)
      self.points.insert(lineIdx + 1, self.mapFromScene(point))
      self.setPolygon(QtGui.QPolygonF(self.points))
      if self.bbox:
          self.bbox.update()
      for line in self.m_lines[lineIdx + 1 :]:
          line.idx += 1
      line = QtCore.QLineF(self.mapToScene(self.points[lineIdx]), point)
      self.m_lines[lineIdx].setLine(line)
      lineItem = LineItem(self, lineIdx + 1, self.borderColor)
      line = QtCore.QLineF(
          point,
          self.mapToScene(self.points[(lineIdx + 2) % len(self)]),
      )
      lineItem.setLine(line)
      self.m_lines.insert(lineIdx + 1, lineItem)
      self.scene().addItem(lineItem)
      lineItem.updateWidth()
  
imports: from qtpy import QtWidgets, QtGui, QtCore
  from .None import GripItem, LineItem, BBoxAnnotation
label_desc: Use image node_id 4 for calling the PolygonAnnotation obj's underlying member method code with example usage: obj.addPointMiddle(lineIdx, point) without return types