def METHOD_NAME(self, element, layer_color, layer_alpha, **opts):
    backend_options = Store.options(backend='bokeh')
    el_name = type(element).name
    style_options = backend_options[(el_name,)]['style']
    allowed = style_options.allowed_keywords
    merged_opts = {opt_name: layer_alpha for opt_name in allowed
                   if 'alpha' in opt_name}
    if el_name in ('HeatMap', 'QuadMesh'):
        merged_opts = {k: v for k, v in merged_opts.items() if 'line_' not in k}
    elif layer_color is None:
        # Keep current color (including color from cycle)
        for color_prop in self.color_props:
            current_color = element.opts.get(group="style")[0].get(color_prop, None)
            if current_color:
                merged_opts.update({color_prop: current_color})
    else:
        # set color
        merged_opts.update(self._get_color_kwarg(layer_color))
    for opt in ('cmap', 'colorbar'):
        if opt in opts and opt in allowed:
            merged_opts[opt] = opts[opt]
    filtered = {k: v for k, v in merged_opts.items() if k in allowed}
    plot_opts = Store.lookup_options('bokeh', element, 'plot').kwargs
    tools = plot_opts.get('tools', []) + ['box_select']
    return element.opts(backend='bokeh', clone=True, tools=tools,
                        **filtered)