def METHOD_NAME(self, component, gc, view_bounds=None, mode="normal"):
    mid_y = component.position[1] + component.bounds[1] / 2
    # Draw each of a possibly disjoint set of selections
    coords = self._get_selection_screencoords()
    for coord in coords:
        start, end = coord
        with gc:
            gc.set_alpha(self.alpha)
            gc.set_stroke_color(self.border_color_)
            gc.set_line_width(self.border_width)
            gc.rect(
                start + self.radius,
                mid_y - 1,
                (end - start - 2 * self.radius),
                2,
            )
            gc.draw_path()
            gc.set_fill_color(self.low_color_)
            self._circle(gc, start, mid_y, self.radius)
            # Have to stroke/fill the path before we change out the
            # fill color
            gc.draw_path()
            gc.set_fill_color(self.high_color_)
            self._circle(gc, end, mid_y, self.radius)
            gc.draw_path()