def METHOD_NAME(self, component, gc, view_bounds=None, mode="normal"):
    """Draws this component overlaid on another component.
    Implements AbstractOverlay.
    """
    if not self._visible:
        return
    plot = self.plot
    datasource = plot.color_data
    if self.selection_type == "range":
        selections = datasource.metadata["selections"]
        if selections is not None and len(selections) == 0:
            return
        low, high = selections
        if abs(high - low) / abs(high + low) < self.minimum_delta:
            return
        # Mask the data with just the points falling within the data
        # range selected on the colorbar
        data_pts = datasource.get_data()
        mask = (data_pts >= low) & (data_pts <= high)
    elif self.selection_type == "mask":
        mask = functools.reduce(
            logical_and, datasource.metadata["selection_masks"]
        )
        if sum(mask) < 2:
            return
    datasource.set_mask(mask)
    # Store the current plot color settings before overwriting them
    fade_outline_color = plot.outline_color_
    # Overwrite marker outline color and fill alpha settings of
    # the plot, then manually invoke the plot to draw onto the GC.
    plot.outline_color = list(self._old_outline_color[:3]) + [1.0]
    plot.fill_alpha = 1.0
    plot.line_width = self.selected_outline_width
    plot._draw_plot(gc, view_bounds, mode)
    # Restore the plot's previous color settings and data mask.
    plot.fill_alpha = self.fade_alpha
    plot.outline_color = fade_outline_color
    plot.line_width = self.unselected_outline_width
    datasource.remove_mask()