docs: def paint(self, painter, option, widget):
          """
          Overloads the default QGraphicsItem paint event to update the \
          node when necessary and call the draw method for the node.
          
          :param      painter     <QPainter>
          :param      option      <QStyleOptionGraphicsItem>
          :param      widget      <QWidget>
          """
          # rebuild when dirty
          if self.isDirty():
              self.rebuild()
          
          painter.save()
          painter.setOpacity( self.opacity() )
          
          if self.drawHotspotsUnderneath():
              self.drawHotspots(painter)
          
          if self.isEnabled():
              painter.setPen(self.penColor())
              painter.setBrush(self.brush())
          else:
              painter.setPen(self.disabledPenColor())
              painter.setBrush(self.disabledBrush())
          
          # draw the item
          self.draw(painter, option, widget)
          
          if not self.drawHotspotsUnderneath():
              self.drawHotspots(painter)
          
          painter.restore()