docs: def render(self, painter, node=None):
          """
          Draws this node based on its style information
          
          :param      painter | <QPainter>
          """
          policy = self.visibilityPolicy()
          
          if policy == XNodeHotspot.VisibilityPolicy.Never:
              return
          elif policy == XNodeHotspot.VisibilityPolicy.Hover and \
              not self._hovered:
              return
          elif policy == XNodeHotspot.VisibilityPolicy.NodeHover and \
              not (node and node.isHovered()):
              return
          
          # initialize the look
          painter.setPen(self.borderColor())
          painter.setBrush(self.color())
          
          # draw a circle
          if self.style() == XNodeHotspot.Style.Circle:
              painter.drawEllipse(self.rect())
          
          # draw a square
          elif self.style() == XNodeHotspot.Style.Square:
              painter.drawRect(self.rect())
          
          # draw an icon
          elif self.style() == XNodeHotspot.Style.Icon:
              rect = self.rect()
              x = int(rect.x())
              y = int(rect.y())
              w = int(rect.size().width())
              h = int(rect.size().height())
              
              icon = self.icon()
              hicon = self.hoverIcon()
              
              if not self.isEnabled():
                  pixmap = icon.pixmap(w, h, QIcon.Disabled)
              elif not self._hovered:
                  pixmap = icon.pixmap(w, h)
              elif hicon:
                  pixmap = hicon.pixmap(w, h)
              else:
                  pixmap = icon.pixmap(w, h, QIcon.Selected)
              
              painter.drawPixmap(x, y, pixmap)