### Question:
ExpressionEditorControlImpl extends AbstractCanvasControl<AbstractCanvas> implements ExpressionEditorControl { @Override protected void doDestroy() { view = null; decisionNavigator = null; session.ifPresent(s -> s.getCanvasHandler().removeDomainObjectListener(refreshEditorDomainObjectListener)); session = Optional.empty(); expressionEditor = Optional.empty(); } @Inject  ExpressionEditorControlImpl(final ExpressionEditorView view,
                                       final DecisionNavigatorPresenter decisionNavigator,
                                       final DMNGraphUtils dmnGraphUtils,
                                       final DMNDiagramsSession dmnDiagramsSession,
                                       final Event<CanvasElementUpdatedEvent> canvasElementUpdatedEvent,
                                       final DRDNameChanger drdNameChanger); @Override void bind(final DMNSession session); @Override ExpressionEditorView.Presenter getExpressionEditor(); @SuppressWarnings("unused") void onCanvasFocusedSelectionEvent(final @Observes CanvasSelectionEvent event); void onCanvasElementUpdated(final @Observes CanvasElementUpdatedEvent event);  }### Answer:
@Test public void testDoDestroy() { control.bind(session); verify(canvasHandler).addDomainObjectListener(domainObjectListenerCaptor.capture()); control.doDestroy(); assertNull(control.getExpressionEditor()); final CanvasDomainObjectListener domainObjectListener = domainObjectListenerCaptor.getValue(); verify(canvasHandler).removeDomainObjectListener(domainObjectListener); }