public void dispose()

in plugin/src/software/aws/toolkits/eclipse/amazonq/util/QInvocationSession.java [679:731]


    public void dispose() {
        var widget = viewer.getTextWidget();
        sendSessionCompletionResult();
        suggestionsContext = null;
        resetSessionResultParams();
        if (inlineTextFont != null) {
            inlineTextFont.dispose();
        }
        if (inlineTextFontBold != null) {
            inlineTextFontBold.dispose();
        }
        inlineTextFont = null;
        inlineTextFontBold = null;
        caretMovementReason = CaretMovementReason.UNEXAMINED;
        unresolvedTasks.forEach((uuid, task) -> {
            boolean cancelled = task.cancel(true);
            if (cancelled) {
                Activator.getLogger().info(uuid + " cancelled.");
            } else {
                Activator.getLogger().error(uuid + " failed to cancel.");
            }
        });
        unresolvedTasks.clear();
        if (inputListener != null) {
            inputListener.beforeRemoval();
            widget.removeVerifyKeyListener(inputListener);
            widget.removeMouseListener(inputListener);
        }
        if (terminationListener != null) {
            widget.removeFocusListener(terminationListener);
        }
        if (paintListener != null) {
            paintListener.beforeRemoval();
            widget.removePaintListener(paintListener);
        }
        if (caretListener != null) {
            widget.removeCaretListener(caretListener);
        }
        Display.getDefault().asyncExec(() -> {
            if (!widget.isDisposed()) {
                widget.redraw();
                widget.update();
            }
        });
        paintListener = null;
        caretListener = null;
        inputListener = null;
        terminationListener = null;
        invocationOffset = -1;
        editor = null;
        viewer = null;
        suggestionAccepted = false;
    }