docs: def update_port_side(self):
          """Updates the initial position of the port
  
          The port side is ignored but calculated from the port position. Then the port position is limited to the four
          side lines of the state.
          """
          from rafcon.utils.geometry import point_left_of_line
  
          p = (self._initial_pos.x, self._initial_pos.y)
          nw_x, nw_y, se_x, se_y = self.get_adjusted_border_positions()
          if point_left_of_line(p, (nw_x, nw_y), (se_x, se_y)):  # upper right triangle of state
              if point_left_of_line(p, (nw_x, se_y), (se_x, nw_y)):  # upper quarter triangle of state
                  self._port.side = SnappedSide.TOP
                  self.limit_pos(p[0], se_x, nw_x)
              else:  # right quarter triangle of state
                  self._port.side = SnappedSide.RIGHT
                  self.limit_pos(p[1], se_y, nw_y)
          else:  # lower left triangle of state
              if point_left_of_line(p, (nw_x, se_y), (se_x, nw_y)):  # left quarter triangle of state
                  self._port.side = SnappedSide.LEFT
                  self.limit_pos(p[1], se_y, nw_y)
              else:  # lower quarter triangle of state
                  self._port.side = SnappedSide.BOTTOM
                  self.limit_pos(p[0], se_x, nw_x)
  
          self.set_nearest_border()