class BS3PaletteWidgetImpl extends AbstractPalette<DefaultPaletteDefinition> implements BS3PaletteWidget,
                   IsElement {

    @Override
    protected void doDestroy() {
        shapeGlyphDragHandler.destroy();
        view.destroy();
        categoryWidgetInstances.destroyAll();
        definitionPaletteItemWidgetInstances.destroyAll();
        collapsedDefinitionPaletteItemWidgets.destroyAll();
        itemDragStartCallback = null;
        itemDragUpdateCallback = null;
        itemDropCallback = null;
        closeCallback = null;
        paletteDefinition = null;
    }

    @Inject public  BS3PaletteWidgetImpl(final ShapeManager shapeManager,
                                final ClientFactoryService clientFactoryServices,
                                final BS3PaletteWidgetView view,
                                final ShapeGlyphDragHandler shapeGlyphDragHandler,
                                final StunnerPreferencesRegistries preferencesRegistries,
                                final ManagedInstance<DefinitionPaletteCategoryWidget> categoryWidgetInstance,
                                final ManagedInstance<DefinitionPaletteItemWidget> definitionPaletteItemWidgets,
                                final ManagedInstance<CollapsedDefinitionPaletteItemWidget> collapsedDefinitionPaletteItemWidgets);

}