[gnome-builder] plugins: Use G_DEFINE_FINAL_TYPE for final types



commit 890cc684fa1122a9004dfc7549e97c2c639b4f48
Author: Tom A. Wagner <tom a wagner protonmail com>
Date:   Sun Aug 1 16:31:08 2021 +0200

    plugins: Use G_DEFINE_FINAL_TYPE for final types

 src/plugins/auto-save/gbp-auto-save-buffer-addin.c                  | 2 +-
 src/plugins/autotools/gbp-autotools-build-system-discovery.c        | 2 +-
 src/plugins/autotools/ide-autotools-autogen-stage.c                 | 2 +-
 src/plugins/autotools/ide-autotools-build-system.c                  | 2 +-
 src/plugins/autotools/ide-autotools-build-target-provider.c         | 2 +-
 src/plugins/autotools/ide-autotools-build-target.c                  | 2 +-
 src/plugins/autotools/ide-autotools-make-stage.c                    | 2 +-
 src/plugins/autotools/ide-autotools-makecache-stage.c               | 2 +-
 src/plugins/autotools/ide-autotools-pipeline-addin.c                | 2 +-
 src/plugins/autotools/ide-makecache.c                               | 2 +-
 src/plugins/beautifier/gb-beautifier-editor-addin.c                 | 2 +-
 src/plugins/buffer-monitor/gbp-buffer-monitor-buffer-addin.c        | 2 +-
 src/plugins/buildconfig/ide-buildconfig-config-provider.c           | 2 +-
 src/plugins/buildconfig/ide-buildconfig-config.c                    | 2 +-
 src/plugins/buildconfig/ide-buildconfig-pipeline-addin.c            | 2 +-
 src/plugins/buildsystem/gbp-buildsystem-workbench-addin.c           | 2 +-
 src/plugins/buildui/gbp-buildui-config-surface.c                    | 2 +-
 src/plugins/buildui/gbp-buildui-config-view-addin.c                 | 2 +-
 src/plugins/buildui/gbp-buildui-editor-page-addin.c                 | 2 +-
 src/plugins/buildui/gbp-buildui-log-pane.c                          | 2 +-
 src/plugins/buildui/gbp-buildui-omni-bar-section.c                  | 2 +-
 src/plugins/buildui/gbp-buildui-pane.c                              | 2 +-
 src/plugins/buildui/gbp-buildui-runtime-categories.c                | 2 +-
 src/plugins/buildui/gbp-buildui-runtime-row.c                       | 2 +-
 src/plugins/buildui/gbp-buildui-stage-row.c                         | 2 +-
 src/plugins/buildui/gbp-buildui-tree-addin.c                        | 2 +-
 src/plugins/buildui/gbp-buildui-workspace-addin.c                   | 2 +-
 src/plugins/c-pack/cpack-completion-item.c                          | 2 +-
 src/plugins/c-pack/cpack-completion-provider.c                      | 2 +-
 src/plugins/c-pack/cpack-completion-results.c                       | 2 +-
 src/plugins/c-pack/cpack-editor-page-addin.c                        | 2 +-
 src/plugins/c-pack/ide-c-indenter.c                                 | 2 +-
 src/plugins/clang/ide-clang-client.c                                | 2 +-
 src/plugins/clang/ide-clang-code-index-entries.c                    | 2 +-
 src/plugins/clang/ide-clang-code-indexer.c                          | 2 +-
 src/plugins/clang/ide-clang-completion-item.c                       | 2 +-
 src/plugins/clang/ide-clang-completion-provider.c                   | 2 +-
 src/plugins/clang/ide-clang-diagnostic-provider.c                   | 2 +-
 src/plugins/clang/ide-clang-highlighter.c                           | 2 +-
 src/plugins/clang/ide-clang-preferences-addin.c                     | 2 +-
 src/plugins/clang/ide-clang-proposals.c                             | 2 +-
 src/plugins/clang/ide-clang-rename-provider.c                       | 2 +-
 src/plugins/clang/ide-clang-symbol-node.c                           | 2 +-
 src/plugins/clang/ide-clang-symbol-resolver.c                       | 2 +-
 src/plugins/clang/ide-clang-symbol-tree.c                           | 2 +-
 src/plugins/clang/ide-clang.c                                       | 2 +-
 src/plugins/cmake/gbp-cmake-build-stage-cross-file.c                | 2 +-
 src/plugins/cmake/gbp-cmake-build-system-discovery.c                | 2 +-
 src/plugins/cmake/gbp-cmake-build-system.c                          | 2 +-
 src/plugins/cmake/gbp-cmake-build-target.c                          | 2 +-
 src/plugins/cmake/gbp-cmake-pipeline-addin.c                        | 2 +-
 src/plugins/cmake/gbp-cmake-toolchain-provider.c                    | 2 +-
 src/plugins/cmake/gbp-cmake-toolchain.c                             | 2 +-
 src/plugins/code-index/gbp-code-index-application-addin.c           | 2 +-
 src/plugins/code-index/gbp-code-index-builder.c                     | 2 +-
 src/plugins/code-index/gbp-code-index-executor.c                    | 2 +-
 src/plugins/code-index/gbp-code-index-plan.c                        | 2 +-
 src/plugins/code-index/gbp-code-index-service.c                     | 2 +-
 src/plugins/code-index/gbp-code-index-workbench-addin.c             | 2 +-
 src/plugins/code-index/ide-code-index-index.c                       | 2 +-
 src/plugins/code-index/ide-code-index-search-provider.c             | 2 +-
 src/plugins/code-index/ide-code-index-search-result.c               | 2 +-
 src/plugins/code-index/ide-code-index-symbol-resolver.c             | 2 +-
 src/plugins/codespell/ide-codespell-diagnostic-provider.c           | 2 +-
 src/plugins/codeui/gbp-codeui-buffer-addin.c                        | 2 +-
 src/plugins/codeui/gbp-codeui-tree-addin.c                          | 2 +-
 src/plugins/color-picker/gb-color-picker-document-monitor.c         | 2 +-
 src/plugins/color-picker/gb-color-picker-editor-addin.c             | 2 +-
 src/plugins/color-picker/gb-color-picker-editor-page-addin.c        | 2 +-
 src/plugins/color-picker/gb-color-picker-prefs-list.c               | 2 +-
 src/plugins/color-picker/gb-color-picker-prefs-palette-list.c       | 2 +-
 src/plugins/color-picker/gb-color-picker-prefs-palette-row.c        | 2 +-
 src/plugins/color-picker/gb-color-picker-prefs.c                    | 2 +-
 src/plugins/command-bar/gbp-command-bar-command-provider.c          | 2 +-
 src/plugins/command-bar/gbp-command-bar-suggestion.c                | 2 +-
 src/plugins/command-bar/gbp-command-bar-workspace-addin.c           | 2 +-
 src/plugins/command-bar/gbp-command-bar.c                           | 2 +-
 src/plugins/command-bar/gbp-gaction-command.c                       | 2 +-
 src/plugins/comment-code/gbp-comment-code-editor-page-addin.c       | 2 +-
 src/plugins/create-project/gbp-create-project-application-addin.c   | 2 +-
 src/plugins/create-project/gbp-create-project-surface.c             | 2 +-
 src/plugins/create-project/gbp-create-project-template-icon.c       | 2 +-
 src/plugins/create-project/gbp-create-project-workspace-addin.c     | 2 +-
 src/plugins/ctags/gbp-ctags-workbench-addin.c                       | 2 +-
 src/plugins/ctags/ide-ctags-builder.c                               | 2 +-
 src/plugins/ctags/ide-ctags-completion-item.c                       | 2 +-
 src/plugins/ctags/ide-ctags-completion-provider.c                   | 2 +-
 src/plugins/ctags/ide-ctags-highlighter.c                           | 2 +-
 src/plugins/ctags/ide-ctags-index.c                                 | 2 +-
 src/plugins/ctags/ide-ctags-preferences-addin.c                     | 2 +-
 src/plugins/ctags/ide-ctags-results.c                               | 2 +-
 src/plugins/ctags/ide-ctags-service.c                               | 2 +-
 src/plugins/ctags/ide-ctags-symbol-node.c                           | 2 +-
 src/plugins/ctags/ide-ctags-symbol-resolver.c                       | 2 +-
 src/plugins/ctags/ide-ctags-symbol-tree.c                           | 2 +-
 src/plugins/debuggerui/ide-debugger-breakpoints-view.c              | 2 +-
 src/plugins/debuggerui/ide-debugger-controls.c                      | 2 +-
 src/plugins/debuggerui/ide-debugger-disassembly-view.c              | 2 +-
 src/plugins/debuggerui/ide-debugger-editor-addin.c                  | 2 +-
 src/plugins/debuggerui/ide-debugger-hover-controls.c                | 2 +-
 src/plugins/debuggerui/ide-debugger-hover-provider.c                | 2 +-
 src/plugins/debuggerui/ide-debugger-libraries-view.c                | 2 +-
 src/plugins/debuggerui/ide-debugger-locals-view.c                   | 2 +-
 src/plugins/debuggerui/ide-debugger-log-view.c                      | 2 +-
 src/plugins/debuggerui/ide-debugger-registers-view.c                | 2 +-
 src/plugins/debuggerui/ide-debugger-threads-view.c                  | 2 +-
 src/plugins/devhelp/gbp-devhelp-editor-addin.c                      | 2 +-
 src/plugins/devhelp/gbp-devhelp-frame-addin.c                       | 2 +-
 src/plugins/devhelp/gbp-devhelp-hover-provider.c                    | 2 +-
 src/plugins/devhelp/gbp-devhelp-menu-button.c                       | 2 +-
 src/plugins/devhelp/gbp-devhelp-page.c                              | 2 +-
 src/plugins/devhelp/gbp-devhelp-search.c                            | 2 +-
 src/plugins/devhelp/gbp-devhelp-session-addin.c                     | 2 +-
 src/plugins/deviced/gbp-deviced-deploy-strategy.c                   | 2 +-
 src/plugins/deviced/gbp-deviced-device-provider.c                   | 2 +-
 src/plugins/deviced/gbp-deviced-device.c                            | 2 +-
 src/plugins/deviceui/gbp-deviceui-workspace-addin.c                 | 2 +-
 src/plugins/doap/gbp-doap-workbench-addin.c                         | 2 +-
 src/plugins/dspy/gbp-dspy-application-addin.c                       | 2 +-
 src/plugins/dspy/gbp-dspy-surface.c                                 | 2 +-
 src/plugins/dspy/gbp-dspy-workspace.c                               | 2 +-
 src/plugins/dspy/libdspy/dspy-connection.c                          | 2 +-
 src/plugins/dspy/libdspy/dspy-introspection-model.c                 | 2 +-
 src/plugins/dspy/libdspy/dspy-name-marquee.c                        | 2 +-
 src/plugins/dspy/libdspy/dspy-name-row.c                            | 2 +-
 src/plugins/dspy/libdspy/dspy-name.c                                | 2 +-
 src/plugins/dspy/libdspy/dspy-names-model.c                         | 2 +-
 src/plugins/editor/gbp-confirm-save-dialog.c                        | 2 +-
 src/plugins/editor/gbp-editor-application-addin.c                   | 2 +-
 src/plugins/editor/gbp-editor-frame-addin.c                         | 2 +-
 src/plugins/editor/gbp-editor-frame-controls.c                      | 2 +-
 src/plugins/editor/gbp-editor-hover-provider.c                      | 2 +-
 src/plugins/editor/gbp-editor-session-addin.c                       | 2 +-
 src/plugins/editor/gbp-editor-workbench-addin.c                     | 2 +-
 src/plugins/editor/gbp-editor-workspace-addin.c                     | 2 +-
 src/plugins/editorconfig/gbp-editorconfig-file-settings.c           | 2 +-
 src/plugins/emacs/gbp-emacs-preferences-addin.c                     | 2 +-
 src/plugins/file-search/gbp-file-search-index.c                     | 2 +-
 src/plugins/file-search/gbp-file-search-provider.c                  | 2 +-
 src/plugins/file-search/gbp-file-search-result.c                    | 2 +-
 src/plugins/flatpak/daemon/ipc-flatpak-service-impl.c               | 2 +-
 src/plugins/flatpak/gbp-flatpak-application-addin.c                 | 2 +-
 src/plugins/flatpak/gbp-flatpak-build-system-discovery.c            | 2 +-
 src/plugins/flatpak/gbp-flatpak-build-target-provider.c             | 2 +-
 src/plugins/flatpak/gbp-flatpak-build-target.c                      | 2 +-
 src/plugins/flatpak/gbp-flatpak-client.c                            | 2 +-
 src/plugins/flatpak/gbp-flatpak-clone-widget.c                      | 2 +-
 src/plugins/flatpak/gbp-flatpak-config-provider.c                   | 2 +-
 src/plugins/flatpak/gbp-flatpak-dependency-updater.c                | 2 +-
 src/plugins/flatpak/gbp-flatpak-download-stage.c                    | 2 +-
 src/plugins/flatpak/gbp-flatpak-install-dialog.c                    | 2 +-
 src/plugins/flatpak/gbp-flatpak-manifest.c                          | 2 +-
 src/plugins/flatpak/gbp-flatpak-pipeline-addin.c                    | 2 +-
 src/plugins/flatpak/gbp-flatpak-runner.c                            | 2 +-
 src/plugins/flatpak/gbp-flatpak-runtime-provider.c                  | 2 +-
 src/plugins/flatpak/gbp-flatpak-runtime.c                           | 2 +-
 src/plugins/flatpak/gbp-flatpak-subprocess-launcher.c               | 2 +-
 src/plugins/flatpak/ipc-flatpak-transfer-impl.c                     | 2 +-
 src/plugins/gcc/gbp-gcc-pipeline-addin.c                            | 2 +-
 src/plugins/gcc/gbp-gcc-toolchain-provider.c                        | 2 +-
 src/plugins/gdb/gbp-gdb-debugger.c                                  | 2 +-
 src/plugins/gdiagnose/gbp-gdiagnose-diagnostic-provider.c           | 2 +-
 src/plugins/gettext/ide-gettext-diagnostic-provider.c               | 2 +-
 src/plugins/git/daemon/ipc-git-change-monitor-impl.c                | 2 +-
 src/plugins/git/daemon/ipc-git-config-impl.c                        | 2 +-
 src/plugins/git/daemon/ipc-git-index-monitor.c                      | 2 +-
 src/plugins/git/daemon/ipc-git-remote-callbacks.c                   | 2 +-
 src/plugins/git/daemon/ipc-git-repository-impl.c                    | 2 +-
 src/plugins/git/daemon/ipc-git-service-impl.c                       | 2 +-
 src/plugins/git/gbp-git-branch.c                                    | 2 +-
 src/plugins/git/gbp-git-buffer-addin.c                              | 2 +-
 src/plugins/git/gbp-git-buffer-change-monitor.c                     | 2 +-
 src/plugins/git/gbp-git-client.c                                    | 2 +-
 src/plugins/git/gbp-git-dependency-updater.c                        | 2 +-
 src/plugins/git/gbp-git-pipeline-addin.c                            | 2 +-
 src/plugins/git/gbp-git-progress.c                                  | 2 +-
 src/plugins/git/gbp-git-submodule-stage.c                           | 2 +-
 src/plugins/git/gbp-git-tag.c                                       | 2 +-
 src/plugins/git/gbp-git-vcs-cloner.c                                | 2 +-
 src/plugins/git/gbp-git-vcs-config.c                                | 2 +-
 src/plugins/git/gbp-git-vcs-initializer.c                           | 2 +-
 src/plugins/git/gbp-git-vcs.c                                       | 2 +-
 src/plugins/git/gbp-git-workbench-addin.c                           | 2 +-
 src/plugins/glade/gbp-glade-editor-addin.c                          | 2 +-
 src/plugins/glade/gbp-glade-frame-addin.c                           | 2 +-
 src/plugins/glade/gbp-glade-page.c                                  | 2 +-
 src/plugins/glade/gbp-glade-properties.c                            | 2 +-
 src/plugins/glade/gbp-glade-workbench-addin.c                       | 2 +-
 src/plugins/gnome-code-assistance/ide-gca-diagnostic-provider.c     | 2 +-
 src/plugins/gnome-code-assistance/ide-gca-preferences-addin.c       | 2 +-
 src/plugins/gnome-code-assistance/ide-gca-service.c                 | 2 +-
 src/plugins/greeter/gbp-greeter-application-addin.c                 | 2 +-
 src/plugins/grep/gbp-grep-model.c                                   | 2 +-
 src/plugins/grep/gbp-grep-panel.c                                   | 2 +-
 src/plugins/grep/gbp-grep-popover.c                                 | 2 +-
 src/plugins/grep/gbp-grep-tree-addin.c                              | 2 +-
 src/plugins/history/gbp-history-editor-page-addin.c                 | 2 +-
 src/plugins/history/gbp-history-frame-addin.c                       | 2 +-
 src/plugins/history/gbp-history-item.c                              | 2 +-
 src/plugins/html-completion/ide-html-completion-provider.c          | 2 +-
 src/plugins/html-completion/ide-html-proposal.c                     | 2 +-
 src/plugins/html-completion/ide-html-proposals.c                    | 2 +-
 src/plugins/line-spacing/gbp-line-spacing-buffer-addin.c            | 2 +-
 src/plugins/ls/gbp-ls-editor-page-addin.c                           | 2 +-
 src/plugins/ls/gbp-ls-model.c                                       | 2 +-
 src/plugins/ls/gbp-ls-page.c                                        | 2 +-
 src/plugins/ls/gbp-ls-tree-view.c                                   | 2 +-
 src/plugins/ls/gbp-ls-workbench-addin.c                             | 2 +-
 src/plugins/meson-templates/resources/src/application.c             | 2 +-
 src/plugins/meson-templates/resources/src/window.c                  | 2 +-
 src/plugins/meson/gbp-meson-build-stage-cross-file.c                | 2 +-
 src/plugins/meson/gbp-meson-build-system-discovery.c                | 2 +-
 src/plugins/meson/gbp-meson-build-system.c                          | 2 +-
 src/plugins/meson/gbp-meson-build-target-provider.c                 | 2 +-
 src/plugins/meson/gbp-meson-build-target.c                          | 2 +-
 src/plugins/meson/gbp-meson-config-view-addin.c                     | 2 +-
 src/plugins/meson/gbp-meson-pipeline-addin.c                        | 2 +-
 src/plugins/meson/gbp-meson-test-provider.c                         | 2 +-
 src/plugins/meson/gbp-meson-test.c                                  | 2 +-
 src/plugins/meson/gbp-meson-tool-row.c                              | 2 +-
 src/plugins/meson/gbp-meson-toolchain-edition-preferences-addin.c   | 2 +-
 src/plugins/meson/gbp-meson-toolchain-edition-preferences-row.c     | 2 +-
 src/plugins/meson/gbp-meson-toolchain-provider.c                    | 2 +-
 src/plugins/meson/gbp-meson-toolchain.c                             | 2 +-
 src/plugins/messages/gbp-messages-editor-addin.c                    | 2 +-
 src/plugins/messages/gbp-messages-panel.c                           | 2 +-
 src/plugins/modelines/gbp-modelines-file-settings.c                 | 2 +-
 src/plugins/newcomers/gbp-newcomers-project.c                       | 2 +-
 src/plugins/newcomers/gbp-newcomers-section.c                       | 2 +-
 src/plugins/notification/ide-notification-addin.c                   | 2 +-
 src/plugins/omni-gutter/gbp-omni-gutter-editor-page-addin.c         | 2 +-
 src/plugins/omni-gutter/gbp-omni-gutter-renderer.c                  | 2 +-
 src/plugins/open-with-external/gbp-owe-workbench-addin.c            | 2 +-
 src/plugins/podman/gbp-podman-runtime-provider.c                    | 2 +-
 src/plugins/podman/gbp-podman-runtime.c                             | 2 +-
 src/plugins/podman/gbp-podman-subprocess-launcher.c                 | 2 +-
 src/plugins/project-tree/gbp-new-file-popover.c                     | 2 +-
 src/plugins/project-tree/gbp-project-tree-addin.c                   | 2 +-
 src/plugins/project-tree/gbp-project-tree-frame-addin.c             | 2 +-
 src/plugins/project-tree/gbp-project-tree-pane.c                    | 2 +-
 src/plugins/project-tree/gbp-project-tree-workspace-addin.c         | 2 +-
 src/plugins/project-tree/gbp-project-tree.c                         | 2 +-
 src/plugins/project-tree/gbp-rename-file-popover.c                  | 2 +-
 src/plugins/python-pack/ide-python-indenter.c                       | 2 +-
 src/plugins/qemu/gbp-qemu-device-provider.c                         | 2 +-
 src/plugins/quick-highlight/gbp-quick-highlight-editor-page-addin.c | 2 +-
 src/plugins/quick-highlight/gbp-quick-highlight-preferences.c       | 2 +-
 src/plugins/recent/gbp-recent-section.c                             | 2 +-
 src/plugins/recent/gbp-recent-workbench-addin.c                     | 2 +-
 src/plugins/restore-cursor/gbp-restore-cursor-buffer-addin.c        | 2 +-
 src/plugins/retab/gbp-retab-editor-page-addin.c                     | 2 +-
 src/plugins/rust-analyzer/rust-analyzer-completion-provider.c       | 2 +-
 src/plugins/rust-analyzer/rust-analyzer-diagnostic-provider.c       | 2 +-
 src/plugins/rust-analyzer/rust-analyzer-formatter.c                 | 2 +-
 src/plugins/rust-analyzer/rust-analyzer-highlighter.c               | 2 +-
 src/plugins/rust-analyzer/rust-analyzer-hover-provider.c            | 2 +-
 src/plugins/rust-analyzer/rust-analyzer-pipeline-addin.c            | 2 +-
 src/plugins/rust-analyzer/rust-analyzer-preferences-addin.c         | 2 +-
 src/plugins/rust-analyzer/rust-analyzer-rename-provider.c           | 2 +-
 src/plugins/rust-analyzer/rust-analyzer-search-provider.c           | 2 +-
 src/plugins/rust-analyzer/rust-analyzer-service.c                   | 2 +-
 src/plugins/rust-analyzer/rust-analyzer-symbol-resolver.c           | 2 +-
 src/plugins/shellcmd/gbp-shellcmd-application-addin.c               | 2 +-
 src/plugins/shellcmd/gbp-shellcmd-command-editor.c                  | 2 +-
 src/plugins/shellcmd/gbp-shellcmd-command-model.c                   | 2 +-
 src/plugins/shellcmd/gbp-shellcmd-command-provider.c                | 2 +-
 src/plugins/shellcmd/gbp-shellcmd-command-row.c                     | 2 +-
 src/plugins/shellcmd/gbp-shellcmd-command.c                         | 2 +-
 src/plugins/shellcmd/gbp-shellcmd-list.c                            | 2 +-
 src/plugins/shellcmd/gbp-shellcmd-preferences-addin.c               | 2 +-
 src/plugins/snippets/ide-snippet-completion-item.c                  | 2 +-
 src/plugins/snippets/ide-snippet-completion-provider.c              | 2 +-
 src/plugins/snippets/ide-snippet-model.c                            | 2 +-
 src/plugins/snippets/ide-snippet-preferences-addin.c                | 2 +-
 src/plugins/snippets/snippets/gobject.snippets                      | 4 ++--
 src/plugins/spellcheck/gbp-spell-buffer-addin.c                     | 2 +-
 src/plugins/spellcheck/gbp-spell-dict.c                             | 2 +-
 src/plugins/spellcheck/gbp-spell-editor-addin.c                     | 2 +-
 src/plugins/spellcheck/gbp-spell-editor-page-addin.c                | 2 +-
 src/plugins/spellcheck/gbp-spell-language-popover.c                 | 2 +-
 src/plugins/spellcheck/gbp-spell-navigator.c                        | 2 +-
 src/plugins/spellcheck/gbp-spell-widget.c                           | 2 +-
 src/plugins/sublime/gbp-sublime-preferences-addin.c                 | 2 +-
 src/plugins/support/ide-support-application-addin.c                 | 2 +-
 src/plugins/symbol-tree/gbp-symbol-frame-addin.c                    | 2 +-
 src/plugins/symbol-tree/gbp-symbol-hover-provider.c                 | 2 +-
 src/plugins/symbol-tree/gbp-symbol-menu-button.c                    | 2 +-
 src/plugins/symbol-tree/gbp-symbol-tree-builder.c                   | 2 +-
 src/plugins/sysprof/gbp-sysprof-surface.c                           | 2 +-
 src/plugins/sysprof/gbp-sysprof-workspace-addin.c                   | 2 +-
 src/plugins/sysroot/gbp-sysroot-manager.c                           | 2 +-
 src/plugins/sysroot/gbp-sysroot-preferences-addin.c                 | 2 +-
 src/plugins/sysroot/gbp-sysroot-preferences-row.c                   | 2 +-
 src/plugins/sysroot/gbp-sysroot-runtime-provider.c                  | 2 +-
 src/plugins/sysroot/gbp-sysroot-runtime.c                           | 2 +-
 src/plugins/sysroot/gbp-sysroot-subprocess-launcher.c               | 2 +-
 src/plugins/sysroot/gbp-sysroot-toolchain-provider.c                | 2 +-
 src/plugins/terminal/gbp-terminal-application-addin.c               | 2 +-
 src/plugins/terminal/gbp-terminal-preferences-addin.c               | 2 +-
 src/plugins/terminal/gbp-terminal-workspace-addin.c                 | 2 +-
 src/plugins/testui/gbp-test-output-panel.c                          | 2 +-
 src/plugins/testui/gbp-test-path.c                                  | 2 +-
 src/plugins/testui/gbp-test-tree-addin.c                            | 2 +-
 src/plugins/todo/gbp-todo-item.c                                    | 2 +-
 src/plugins/todo/gbp-todo-model.c                                   | 2 +-
 src/plugins/todo/gbp-todo-panel.c                                   | 2 +-
 src/plugins/todo/gbp-todo-workspace-addin.c                         | 2 +-
 src/plugins/trim-spaces/gbp-trim-spaces-buffer-addin.c              | 2 +-
 src/plugins/update-manager/gbp-update-manager-app-addin.c           | 2 +-
 src/plugins/vagrant/gbp-vagrant-runtime-provider.c                  | 2 +-
 src/plugins/vagrant/gbp-vagrant-runtime.c                           | 2 +-
 src/plugins/vagrant/gbp-vagrant-subprocess-launcher.c               | 2 +-
 src/plugins/vcsui/gbp-vcsui-editor-page-addin.c                     | 2 +-
 src/plugins/vcsui/gbp-vcsui-tree-addin.c                            | 2 +-
 src/plugins/vcsui/gbp-vcsui-workbench-addin.c                       | 2 +-
 src/plugins/vim/gbp-vim-command-provider.c                          | 2 +-
 src/plugins/vim/gbp-vim-command.c                                   | 2 +-
 src/plugins/vim/gbp-vim-preferences-addin.c                         | 2 +-
 src/plugins/words/gbp-word-completion-provider.c                    | 2 +-
 src/plugins/words/gbp-word-proposal.c                               | 2 +-
 src/plugins/words/gbp-word-proposals.c                              | 2 +-
 src/plugins/xml-pack/ide-xml-completion-provider.c                  | 2 +-
 src/plugins/xml-pack/ide-xml-diagnostic-provider.c                  | 2 +-
 src/plugins/xml-pack/ide-xml-highlighter.c                          | 2 +-
 src/plugins/xml-pack/ide-xml-indenter.c                             | 2 +-
 src/plugins/xml-pack/ide-xml-parser.c                               | 2 +-
 src/plugins/xml-pack/ide-xml-proposal.c                             | 2 +-
 src/plugins/xml-pack/ide-xml-rng-parser.c                           | 2 +-
 src/plugins/xml-pack/ide-xml-sax.c                                  | 2 +-
 src/plugins/xml-pack/ide-xml-service.c                              | 2 +-
 src/plugins/xml-pack/ide-xml-stack.c                                | 2 +-
 src/plugins/xml-pack/ide-xml-symbol-node.c                          | 2 +-
 src/plugins/xml-pack/ide-xml-symbol-resolver.c                      | 2 +-
 src/plugins/xml-pack/ide-xml-symbol-tree.c                          | 2 +-
 src/plugins/xml-pack/ide-xml-tree-builder.c                         | 2 +-
 src/plugins/xml-pack/ide-xml-validator.c                            | 2 +-
 336 files changed, 337 insertions(+), 337 deletions(-)
---
diff --git a/src/plugins/auto-save/gbp-auto-save-buffer-addin.c 
b/src/plugins/auto-save/gbp-auto-save-buffer-addin.c
index adbe58b58..ed64d7f8f 100644
--- a/src/plugins/auto-save/gbp-auto-save-buffer-addin.c
+++ b/src/plugins/auto-save/gbp-auto-save-buffer-addin.c
@@ -227,7 +227,7 @@ buffer_addin_iface_init (IdeBufferAddinInterface *iface)
   iface->file_loaded = gbp_auto_save_buffer_addin_file_loaded;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpAutoSaveBufferAddin, gbp_auto_save_buffer_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpAutoSaveBufferAddin, gbp_auto_save_buffer_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_BUFFER_ADDIN, buffer_addin_iface_init))
 
 static void
diff --git a/src/plugins/autotools/gbp-autotools-build-system-discovery.c 
b/src/plugins/autotools/gbp-autotools-build-system-discovery.c
index a38637171..d68e2b226 100644
--- a/src/plugins/autotools/gbp-autotools-build-system-discovery.c
+++ b/src/plugins/autotools/gbp-autotools-build-system-discovery.c
@@ -29,7 +29,7 @@ struct _GbpAutotoolsBuildSystemDiscovery
   IdeSimpleBuildSystemDiscovery parent_instance;
 };
 
-G_DEFINE_TYPE (GbpAutotoolsBuildSystemDiscovery,
+G_DEFINE_FINAL_TYPE (GbpAutotoolsBuildSystemDiscovery,
                gbp_autotools_build_system_discovery,
                IDE_TYPE_SIMPLE_BUILD_SYSTEM_DISCOVERY)
 
diff --git a/src/plugins/autotools/ide-autotools-autogen-stage.c 
b/src/plugins/autotools/ide-autotools-autogen-stage.c
index fea972823..870ae0534 100644
--- a/src/plugins/autotools/ide-autotools-autogen-stage.c
+++ b/src/plugins/autotools/ide-autotools-autogen-stage.c
@@ -29,7 +29,7 @@ struct _IdeAutotoolsAutogenStage
   gchar *srcdir;
 };
 
-G_DEFINE_TYPE (IdeAutotoolsAutogenStage, ide_autotools_autogen_stage, IDE_TYPE_PIPELINE_STAGE)
+G_DEFINE_FINAL_TYPE (IdeAutotoolsAutogenStage, ide_autotools_autogen_stage, IDE_TYPE_PIPELINE_STAGE)
 
 enum {
   PROP_0,
diff --git a/src/plugins/autotools/ide-autotools-build-system.c 
b/src/plugins/autotools/ide-autotools-build-system.c
index 9057e0e12..8ab29a0ab 100644
--- a/src/plugins/autotools/ide-autotools-build-system.c
+++ b/src/plugins/autotools/ide-autotools-build-system.c
@@ -43,7 +43,7 @@ struct _IdeAutotoolsBuildSystem
 static void async_initable_iface_init (GAsyncInitableIface *iface);
 static void build_system_iface_init (IdeBuildSystemInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IdeAutotoolsBuildSystem,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeAutotoolsBuildSystem,
                          ide_autotools_build_system,
                          IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (G_TYPE_ASYNC_INITABLE, async_initable_iface_init)
diff --git a/src/plugins/autotools/ide-autotools-build-target-provider.c 
b/src/plugins/autotools/ide-autotools-build-target-provider.c
index e7e6d7528..9b02f59c1 100644
--- a/src/plugins/autotools/ide-autotools-build-target-provider.c
+++ b/src/plugins/autotools/ide-autotools-build-target-provider.c
@@ -164,7 +164,7 @@ build_target_provider_iface_init (IdeBuildTargetProviderInterface *iface)
   iface->get_targets_finish = ide_autotools_build_target_provider_get_targets_finish;
 }
 
-G_DEFINE_TYPE_WITH_CODE (IdeAutotoolsBuildTargetProvider,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeAutotoolsBuildTargetProvider,
                          ide_autotools_build_target_provider,
                          IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_BUILD_TARGET_PROVIDER,
diff --git a/src/plugins/autotools/ide-autotools-build-target.c 
b/src/plugins/autotools/ide-autotools-build-target.c
index 872c21add..8f8f7cb5a 100644
--- a/src/plugins/autotools/ide-autotools-build-target.c
+++ b/src/plugins/autotools/ide-autotools-build-target.c
@@ -41,7 +41,7 @@ enum {
 
 static void build_target_iface_init (IdeBuildTargetInterface *iface);
 
-G_DEFINE_TYPE_EXTENDED (IdeAutotoolsBuildTarget, ide_autotools_build_target, IDE_TYPE_OBJECT, 0,
+G_DEFINE_TYPE_EXTENDED (IdeAutotoolsBuildTarget, ide_autotools_build_target, IDE_TYPE_OBJECT, 
G_TYPE_FLAG_FINAL,
                         G_IMPLEMENT_INTERFACE (IDE_TYPE_BUILD_TARGET, build_target_iface_init))
 
 static GParamSpec *properties [N_PROPS];
diff --git a/src/plugins/autotools/ide-autotools-make-stage.c 
b/src/plugins/autotools/ide-autotools-make-stage.c
index 56788f8f8..139be69a7 100644
--- a/src/plugins/autotools/ide-autotools-make-stage.c
+++ b/src/plugins/autotools/ide-autotools-make-stage.c
@@ -72,7 +72,7 @@ enum {
   N_PROPS
 };
 
-G_DEFINE_TYPE (IdeAutotoolsMakeStage, ide_autotools_make_stage, IDE_TYPE_PIPELINE_STAGE)
+G_DEFINE_FINAL_TYPE (IdeAutotoolsMakeStage, ide_autotools_make_stage, IDE_TYPE_PIPELINE_STAGE)
 
 static GParamSpec *properties [N_PROPS];
 
diff --git a/src/plugins/autotools/ide-autotools-makecache-stage.c 
b/src/plugins/autotools/ide-autotools-makecache-stage.c
index 0f367e745..c9f292e57 100644
--- a/src/plugins/autotools/ide-autotools-makecache-stage.c
+++ b/src/plugins/autotools/ide-autotools-makecache-stage.c
@@ -33,7 +33,7 @@ struct _IdeAutotoolsMakecacheStage
   GFile                 *cache_file;
 };
 
-G_DEFINE_TYPE (IdeAutotoolsMakecacheStage, ide_autotools_makecache_stage, IDE_TYPE_PIPELINE_STAGE_LAUNCHER)
+G_DEFINE_FINAL_TYPE (IdeAutotoolsMakecacheStage, ide_autotools_makecache_stage, 
IDE_TYPE_PIPELINE_STAGE_LAUNCHER)
 
 static void
 ide_autotools_makecache_stage_makecache_cb (GObject      *object,
diff --git a/src/plugins/autotools/ide-autotools-pipeline-addin.c 
b/src/plugins/autotools/ide-autotools-pipeline-addin.c
index cf0325637..f1e8a3e68 100644
--- a/src/plugins/autotools/ide-autotools-pipeline-addin.c
+++ b/src/plugins/autotools/ide-autotools-pipeline-addin.c
@@ -413,7 +413,7 @@ addin_iface_init (IdePipelineAddinInterface *iface)
 
 struct _IdeAutotoolsPipelineAddin { IdeObject parent; };
 
-G_DEFINE_TYPE_WITH_CODE (IdeAutotoolsPipelineAddin, ide_autotools_pipeline_addin, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeAutotoolsPipelineAddin, ide_autotools_pipeline_addin, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_PIPELINE_ADDIN, addin_iface_init))
 
 static void
diff --git a/src/plugins/autotools/ide-makecache.c b/src/plugins/autotools/ide-makecache.c
index 08ee497b0..58a8e4c41 100644
--- a/src/plugins/autotools/ide-makecache.c
+++ b/src/plugins/autotools/ide-makecache.c
@@ -82,7 +82,7 @@ typedef struct
   IdeSubprocessLauncher *launcher;
 } GetBuildTargets;
 
-G_DEFINE_TYPE (IdeMakecache, ide_makecache, IDE_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeMakecache, ide_makecache, IDE_TYPE_OBJECT)
 
 DZL_DEFINE_COUNTER (instances, "IdeMakecache", "Instances", "The number of IdeMakecache")
 
diff --git a/src/plugins/beautifier/gb-beautifier-editor-addin.c 
b/src/plugins/beautifier/gb-beautifier-editor-addin.c
index ee0930e2b..23fbdc938 100644
--- a/src/plugins/beautifier/gb-beautifier-editor-addin.c
+++ b/src/plugins/beautifier/gb-beautifier-editor-addin.c
@@ -37,7 +37,7 @@
 
 static void editor_addin_iface_init (IdeEditorAddinInterface *iface);
 
-G_DEFINE_TYPE_EXTENDED (GbBeautifierEditorAddin, gb_beautifier_editor_addin, IDE_TYPE_OBJECT, 0,
+G_DEFINE_TYPE_EXTENDED (GbBeautifierEditorAddin, gb_beautifier_editor_addin, IDE_TYPE_OBJECT, 
G_TYPE_FLAG_FINAL,
                         G_IMPLEMENT_INTERFACE (IDE_TYPE_EDITOR_ADDIN, editor_addin_iface_init))
 
 static void
diff --git a/src/plugins/buffer-monitor/gbp-buffer-monitor-buffer-addin.c 
b/src/plugins/buffer-monitor/gbp-buffer-monitor-buffer-addin.c
index 34604a57a..225f8bee5 100644
--- a/src/plugins/buffer-monitor/gbp-buffer-monitor-buffer-addin.c
+++ b/src/plugins/buffer-monitor/gbp-buffer-monitor-buffer-addin.c
@@ -342,7 +342,7 @@ buffer_addin_iface_init (IdeBufferAddinInterface *iface)
   iface->file_loaded = gbp_buffer_monitor_buffer_addin_file_loaded;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpBufferMonitorBufferAddin, gbp_buffer_monitor_buffer_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpBufferMonitorBufferAddin, gbp_buffer_monitor_buffer_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_BUFFER_ADDIN, buffer_addin_iface_init))
 
 static void
diff --git a/src/plugins/buildconfig/ide-buildconfig-config-provider.c 
b/src/plugins/buildconfig/ide-buildconfig-config-provider.c
index f9f11417b..febe9fbdd 100644
--- a/src/plugins/buildconfig/ide-buildconfig-config-provider.c
+++ b/src/plugins/buildconfig/ide-buildconfig-config-provider.c
@@ -734,7 +734,7 @@ configuration_provider_iface_init (IdeConfigProviderInterface *iface)
   iface->unload = ide_buildconfig_config_provider_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (IdeBuildconfigConfigProvider,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeBuildconfigConfigProvider,
                          ide_buildconfig_config_provider,
                          IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_CONFIG_PROVIDER,
diff --git a/src/plugins/buildconfig/ide-buildconfig-config.c 
b/src/plugins/buildconfig/ide-buildconfig-config.c
index c57ed4911..1dee365e3 100644
--- a/src/plugins/buildconfig/ide-buildconfig-config.c
+++ b/src/plugins/buildconfig/ide-buildconfig-config.c
@@ -39,7 +39,7 @@ enum {
   N_PROPS
 };
 
-G_DEFINE_TYPE (IdeBuildconfigConfig, ide_buildconfig_config, IDE_TYPE_CONFIG)
+G_DEFINE_FINAL_TYPE (IdeBuildconfigConfig, ide_buildconfig_config, IDE_TYPE_CONFIG)
 
 static GParamSpec *properties [N_PROPS];
 
diff --git a/src/plugins/buildconfig/ide-buildconfig-pipeline-addin.c 
b/src/plugins/buildconfig/ide-buildconfig-pipeline-addin.c
index 99d8e98cb..1daa5fae5 100644
--- a/src/plugins/buildconfig/ide-buildconfig-pipeline-addin.c
+++ b/src/plugins/buildconfig/ide-buildconfig-pipeline-addin.c
@@ -111,7 +111,7 @@ pipeline_addin_init (IdePipelineAddinInterface *iface)
 }
 
 struct _IdeBuildconfigPipelineAddin { IdeObject parent_instance; };
-G_DEFINE_TYPE_EXTENDED (IdeBuildconfigPipelineAddin, ide_buildconfig_pipeline_addin, IDE_TYPE_OBJECT, 0,
+G_DEFINE_TYPE_EXTENDED (IdeBuildconfigPipelineAddin, ide_buildconfig_pipeline_addin, IDE_TYPE_OBJECT, 
G_TYPE_FLAG_FINAL,
                         G_IMPLEMENT_INTERFACE (IDE_TYPE_PIPELINE_ADDIN, pipeline_addin_init))
 static void ide_buildconfig_pipeline_addin_class_init (IdeBuildconfigPipelineAddinClass *klass) { }
 static void ide_buildconfig_pipeline_addin_init (IdeBuildconfigPipelineAddin *self) { }
diff --git a/src/plugins/buildsystem/gbp-buildsystem-workbench-addin.c 
b/src/plugins/buildsystem/gbp-buildsystem-workbench-addin.c
index a1a7dd078..b208252e6 100644
--- a/src/plugins/buildsystem/gbp-buildsystem-workbench-addin.c
+++ b/src/plugins/buildsystem/gbp-buildsystem-workbench-addin.c
@@ -308,7 +308,7 @@ workbench_addin_iface_init (IdeWorkbenchAddinInterface *iface)
   iface->load_project_finish = gbp_buildsystem_workbench_addin_load_project_finish;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpBuildsystemWorkbenchAddin,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpBuildsystemWorkbenchAddin,
                          gbp_buildsystem_workbench_addin,
                          G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_WORKBENCH_ADDIN,
diff --git a/src/plugins/buildui/gbp-buildui-config-surface.c 
b/src/plugins/buildui/gbp-buildui-config-surface.c
index 85172ade2..3bb0ae0db 100644
--- a/src/plugins/buildui/gbp-buildui-config-surface.c
+++ b/src/plugins/buildui/gbp-buildui-config-surface.c
@@ -50,7 +50,7 @@ typedef struct
   IdeConfig *config;
 } AddinState;
 
-G_DEFINE_TYPE (GbpBuilduiConfigSurface, gbp_buildui_config_surface, IDE_TYPE_SURFACE)
+G_DEFINE_FINAL_TYPE (GbpBuilduiConfigSurface, gbp_buildui_config_surface, IDE_TYPE_SURFACE)
 
 enum {
   PROP_0,
diff --git a/src/plugins/buildui/gbp-buildui-config-view-addin.c 
b/src/plugins/buildui/gbp-buildui-config-view-addin.c
index af054d017..63d6f0fb8 100644
--- a/src/plugins/buildui/gbp-buildui-config-view-addin.c
+++ b/src/plugins/buildui/gbp-buildui-config-view-addin.c
@@ -517,7 +517,7 @@ config_view_addin_iface_init (IdeConfigViewAddinInterface *iface)
   iface->load = gbp_buildui_config_view_addin_load;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpBuilduiConfigViewAddin, gbp_buildui_config_view_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpBuilduiConfigViewAddin, gbp_buildui_config_view_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_CONFIG_VIEW_ADDIN, config_view_addin_iface_init))
 
 static void
diff --git a/src/plugins/buildui/gbp-buildui-editor-page-addin.c 
b/src/plugins/buildui/gbp-buildui-editor-page-addin.c
index 2ad74054c..427f3e9a0 100644
--- a/src/plugins/buildui/gbp-buildui-editor-page-addin.c
+++ b/src/plugins/buildui/gbp-buildui-editor-page-addin.c
@@ -153,7 +153,7 @@ editor_page_addin_iface_init (IdeEditorPageAddinInterface *iface)
   iface->unload = gbp_buildui_editor_page_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpBuilduiEditorPageAddin, gbp_buildui_editor_page_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpBuilduiEditorPageAddin, gbp_buildui_editor_page_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_EDITOR_PAGE_ADDIN, editor_page_addin_iface_init))
 
 static void
diff --git a/src/plugins/buildui/gbp-buildui-log-pane.c b/src/plugins/buildui/gbp-buildui-log-pane.c
index 17460b44f..2158f98e8 100644
--- a/src/plugins/buildui/gbp-buildui-log-pane.c
+++ b/src/plugins/buildui/gbp-buildui-log-pane.c
@@ -47,7 +47,7 @@ enum {
   N_PROPS
 };
 
-G_DEFINE_TYPE (GbpBuilduiLogPane, gbp_buildui_log_pane, IDE_TYPE_PANE)
+G_DEFINE_FINAL_TYPE (GbpBuilduiLogPane, gbp_buildui_log_pane, IDE_TYPE_PANE)
 
 static GParamSpec *properties [N_PROPS];
 
diff --git a/src/plugins/buildui/gbp-buildui-omni-bar-section.c 
b/src/plugins/buildui/gbp-buildui-omni-bar-section.c
index 9cd116cca..b980071c5 100644
--- a/src/plugins/buildui/gbp-buildui-omni-bar-section.c
+++ b/src/plugins/buildui/gbp-buildui-omni-bar-section.c
@@ -52,7 +52,7 @@ struct _GbpBuilduiOmniBarSection
   GtkRevealer    *popover_details_revealer;
 };
 
-G_DEFINE_TYPE (GbpBuilduiOmniBarSection, gbp_buildui_omni_bar_section, GTK_TYPE_BIN)
+G_DEFINE_FINAL_TYPE (GbpBuilduiOmniBarSection, gbp_buildui_omni_bar_section, GTK_TYPE_BIN)
 
 static void
 gbp_buildui_omni_bar_section_notify_can_build (GbpBuilduiOmniBarSection *self,
diff --git a/src/plugins/buildui/gbp-buildui-pane.c b/src/plugins/buildui/gbp-buildui-pane.c
index 9bd033480..6be133dd1 100644
--- a/src/plugins/buildui/gbp-buildui-pane.c
+++ b/src/plugins/buildui/gbp-buildui-pane.c
@@ -55,7 +55,7 @@ struct _GbpBuilduiPane
   guint                warning_count;
 };
 
-G_DEFINE_TYPE (GbpBuilduiPane, gbp_buildui_pane, IDE_TYPE_PANE)
+G_DEFINE_FINAL_TYPE (GbpBuilduiPane, gbp_buildui_pane, IDE_TYPE_PANE)
 
 enum {
   COLUMN_DIAGNOSTIC,
diff --git a/src/plugins/buildui/gbp-buildui-runtime-categories.c 
b/src/plugins/buildui/gbp-buildui-runtime-categories.c
index dca35ea50..4bea7cd0a 100644
--- a/src/plugins/buildui/gbp-buildui-runtime-categories.c
+++ b/src/plugins/buildui/gbp-buildui-runtime-categories.c
@@ -88,7 +88,7 @@ list_model_iface_init (GListModelInterface *iface)
   iface->get_item = gbp_buildui_runtime_categories_get_item;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpBuilduiRuntimeCategories, gbp_buildui_runtime_categories, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpBuilduiRuntimeCategories, gbp_buildui_runtime_categories, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, list_model_iface_init))
 
 static void
diff --git a/src/plugins/buildui/gbp-buildui-runtime-row.c b/src/plugins/buildui/gbp-buildui-runtime-row.c
index 24f770bef..2a3774c35 100644
--- a/src/plugins/buildui/gbp-buildui-runtime-row.c
+++ b/src/plugins/buildui/gbp-buildui-runtime-row.c
@@ -34,7 +34,7 @@ struct _GbpBuilduiRuntimeRow
   GtkImage      *image;
 };
 
-G_DEFINE_TYPE (GbpBuilduiRuntimeRow, gbp_buildui_runtime_row, GTK_TYPE_LIST_BOX_ROW)
+G_DEFINE_FINAL_TYPE (GbpBuilduiRuntimeRow, gbp_buildui_runtime_row, GTK_TYPE_LIST_BOX_ROW)
 
 static void
 gbp_buildui_runtime_row_finalize (GObject *object)
diff --git a/src/plugins/buildui/gbp-buildui-stage-row.c b/src/plugins/buildui/gbp-buildui-stage-row.c
index ed2f0e75f..3e1bcf11d 100644
--- a/src/plugins/buildui/gbp-buildui-stage-row.c
+++ b/src/plugins/buildui/gbp-buildui-stage-row.c
@@ -41,7 +41,7 @@ enum {
   N_PROPS
 };
 
-G_DEFINE_TYPE (GbpBuilduiStageRow, gbp_buildui_stage_row, GTK_TYPE_LIST_BOX_ROW)
+G_DEFINE_FINAL_TYPE (GbpBuilduiStageRow, gbp_buildui_stage_row, GTK_TYPE_LIST_BOX_ROW)
 
 static GParamSpec *properties [N_PROPS];
 
diff --git a/src/plugins/buildui/gbp-buildui-tree-addin.c b/src/plugins/buildui/gbp-buildui-tree-addin.c
index 0e13e68cf..883e9fd6a 100644
--- a/src/plugins/buildui/gbp-buildui-tree-addin.c
+++ b/src/plugins/buildui/gbp-buildui-tree-addin.c
@@ -393,7 +393,7 @@ tree_addin_iface_init (IdeTreeAddinInterface *iface)
   iface->unload = gbp_buildui_tree_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpBuilduiTreeAddin, gbp_buildui_tree_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpBuilduiTreeAddin, gbp_buildui_tree_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_TREE_ADDIN, tree_addin_iface_init))
 
 static void
diff --git a/src/plugins/buildui/gbp-buildui-workspace-addin.c 
b/src/plugins/buildui/gbp-buildui-workspace-addin.c
index 32db092cc..ee40e8eed 100644
--- a/src/plugins/buildui/gbp-buildui-workspace-addin.c
+++ b/src/plugins/buildui/gbp-buildui-workspace-addin.c
@@ -462,7 +462,7 @@ workspace_addin_iface_init (IdeWorkspaceAddinInterface *iface)
   iface->unload = gbp_buildui_workspace_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpBuilduiWorkspaceAddin, gbp_buildui_workspace_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpBuilduiWorkspaceAddin, gbp_buildui_workspace_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_WORKSPACE_ADDIN, workspace_addin_iface_init))
 
 static void
diff --git a/src/plugins/c-pack/cpack-completion-item.c b/src/plugins/c-pack/cpack-completion-item.c
index 0d064e7dc..177050110 100644
--- a/src/plugins/c-pack/cpack-completion-item.c
+++ b/src/plugins/c-pack/cpack-completion-item.c
@@ -26,7 +26,7 @@
 
 #include "cpack-completion-item.h"
 
-G_DEFINE_TYPE_WITH_CODE (CpackCompletionItem, cpack_completion_item, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (CpackCompletionItem, cpack_completion_item, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_COMPLETION_PROPOSAL, NULL))
 
 static void
diff --git a/src/plugins/c-pack/cpack-completion-provider.c b/src/plugins/c-pack/cpack-completion-provider.c
index a2bb5325a..ef6eb4741 100644
--- a/src/plugins/c-pack/cpack-completion-provider.c
+++ b/src/plugins/c-pack/cpack-completion-provider.c
@@ -35,7 +35,7 @@ struct _CpackCompletionProvider
 
 static void provider_iface_init (IdeCompletionProviderInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (CpackCompletionProvider, cpack_completion_provider, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (CpackCompletionProvider, cpack_completion_provider, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_COMPLETION_PROVIDER, provider_iface_init))
 
 static void
diff --git a/src/plugins/c-pack/cpack-completion-results.c b/src/plugins/c-pack/cpack-completion-results.c
index 9d4d31f36..b4c06d872 100644
--- a/src/plugins/c-pack/cpack-completion-results.c
+++ b/src/plugins/c-pack/cpack-completion-results.c
@@ -50,7 +50,7 @@ typedef struct
 static void list_model_iface_init             (GListModelInterface *iface);
 static void cpack_completion_results_populate (IdeTask             *task);
 
-G_DEFINE_TYPE_WITH_CODE (CpackCompletionResults, cpack_completion_results, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (CpackCompletionResults, cpack_completion_results, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, list_model_iface_init))
 
 static void
diff --git a/src/plugins/c-pack/cpack-editor-page-addin.c b/src/plugins/c-pack/cpack-editor-page-addin.c
index 02577abee..3074704c1 100644
--- a/src/plugins/c-pack/cpack-editor-page-addin.c
+++ b/src/plugins/c-pack/cpack-editor-page-addin.c
@@ -101,7 +101,7 @@ iface_init (IdeEditorPageAddinInterface *iface)
   iface->unload = cpack_editor_page_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (CpackEditorPageAddin, cpack_editor_page_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (CpackEditorPageAddin, cpack_editor_page_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_EDITOR_PAGE_ADDIN, iface_init))
 
 static void
diff --git a/src/plugins/c-pack/ide-c-indenter.c b/src/plugins/c-pack/ide-c-indenter.c
index 325fa9005..d9725fe2a 100644
--- a/src/plugins/c-pack/ide-c-indenter.c
+++ b/src/plugins/c-pack/ide-c-indenter.c
@@ -54,7 +54,7 @@ struct _IdeCIndenter
 
 static void indenter_iface_init (IdeIndenterInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IdeCIndenter, ide_c_indenter, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeCIndenter, ide_c_indenter, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_INDENTER, indenter_iface_init))
 
 enum {
diff --git a/src/plugins/clang/ide-clang-client.c b/src/plugins/clang/ide-clang-client.c
index b0a6f993f..1252ab4f0 100644
--- a/src/plugins/clang/ide-clang-client.c
+++ b/src/plugins/clang/ide-clang-client.c
@@ -61,7 +61,7 @@ typedef struct
   gulong          cancel_id;
 } Call;
 
-G_DEFINE_TYPE (IdeClangClient, ide_clang_client, IDE_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeClangClient, ide_clang_client, IDE_TYPE_OBJECT)
 
 static void
 call_free (gpointer data)
diff --git a/src/plugins/clang/ide-clang-code-index-entries.c 
b/src/plugins/clang/ide-clang-code-index-entries.c
index af6a2ab51..3942cd0dd 100644
--- a/src/plugins/clang/ide-clang-code-index-entries.c
+++ b/src/plugins/clang/ide-clang-code-index-entries.c
@@ -188,7 +188,7 @@ index_entries_iface_init (IdeCodeIndexEntriesInterface *iface)
   iface->next_entries_finish = ide_clang_code_index_entries_next_entries_finish;
 }
 
-G_DEFINE_TYPE_WITH_CODE (IdeClangCodeIndexEntries, ide_clang_code_index_entries, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeClangCodeIndexEntries, ide_clang_code_index_entries, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_CODE_INDEX_ENTRIES, index_entries_iface_init))
 
 static void
diff --git a/src/plugins/clang/ide-clang-code-indexer.c b/src/plugins/clang/ide-clang-code-indexer.c
index bf0b44687..b1c7d7f7b 100644
--- a/src/plugins/clang/ide-clang-code-indexer.c
+++ b/src/plugins/clang/ide-clang-code-indexer.c
@@ -33,7 +33,7 @@ struct _IdeClangCodeIndexer
 
 static void code_indexer_iface_init (IdeCodeIndexerInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IdeClangCodeIndexer, ide_clang_code_indexer, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeClangCodeIndexer, ide_clang_code_indexer, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_CODE_INDEXER, code_indexer_iface_init))
 
 static void
diff --git a/src/plugins/clang/ide-clang-completion-item.c b/src/plugins/clang/ide-clang-completion-item.c
index d4eebbae9..025b62b53 100644
--- a/src/plugins/clang/ide-clang-completion-item.c
+++ b/src/plugins/clang/ide-clang-completion-item.c
@@ -26,7 +26,7 @@
 
 #include "ide-clang-completion-item.h"
 
-G_DEFINE_TYPE_WITH_CODE (IdeClangCompletionItem, ide_clang_completion_item, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeClangCompletionItem, ide_clang_completion_item, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_COMPLETION_PROPOSAL, NULL))
 
 static void
diff --git a/src/plugins/clang/ide-clang-completion-provider.c 
b/src/plugins/clang/ide-clang-completion-provider.c
index a2e645b8c..dfff821ed 100644
--- a/src/plugins/clang/ide-clang-completion-provider.c
+++ b/src/plugins/clang/ide-clang-completion-provider.c
@@ -414,7 +414,7 @@ provider_iface_init (IdeCompletionProviderInterface *iface)
   iface->get_comment = ide_clang_completion_provider_get_comment;
 }
 
-G_DEFINE_TYPE_WITH_CODE (IdeClangCompletionProvider, ide_clang_completion_provider, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeClangCompletionProvider, ide_clang_completion_provider, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_COMPLETION_PROVIDER, provider_iface_init))
 
 static void
diff --git a/src/plugins/clang/ide-clang-diagnostic-provider.c 
b/src/plugins/clang/ide-clang-diagnostic-provider.c
index 176c4832d..48773c301 100644
--- a/src/plugins/clang/ide-clang-diagnostic-provider.c
+++ b/src/plugins/clang/ide-clang-diagnostic-provider.c
@@ -135,7 +135,7 @@ diagnostic_provider_iface_init (IdeDiagnosticProviderInterface *iface)
   iface->diagnose_finish = ide_clang_diagnostic_provider_diagnose_finish;
 }
 
-G_DEFINE_TYPE_WITH_CODE (IdeClangDiagnosticProvider,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeClangDiagnosticProvider,
                          ide_clang_diagnostic_provider,
                          IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_DIAGNOSTIC_PROVIDER,
diff --git a/src/plugins/clang/ide-clang-highlighter.c b/src/plugins/clang/ide-clang-highlighter.c
index 7f797b23b..4c4532845 100644
--- a/src/plugins/clang/ide-clang-highlighter.c
+++ b/src/plugins/clang/ide-clang-highlighter.c
@@ -42,7 +42,7 @@ struct _IdeClangHighlighter
 static void highlighter_iface_init             (IdeHighlighterInterface *iface);
 static void ide_clang_highlighter_queue_udpate (IdeClangHighlighter     *self);
 
-G_DEFINE_TYPE_EXTENDED (IdeClangHighlighter, ide_clang_highlighter, IDE_TYPE_OBJECT, 0,
+G_DEFINE_TYPE_EXTENDED (IdeClangHighlighter, ide_clang_highlighter, IDE_TYPE_OBJECT, G_TYPE_FLAG_FINAL,
                         G_IMPLEMENT_INTERFACE (IDE_TYPE_HIGHLIGHTER, highlighter_iface_init))
 
 static inline gboolean
diff --git a/src/plugins/clang/ide-clang-preferences-addin.c b/src/plugins/clang/ide-clang-preferences-addin.c
index 06571beb5..35a60e8a0 100644
--- a/src/plugins/clang/ide-clang-preferences-addin.c
+++ b/src/plugins/clang/ide-clang-preferences-addin.c
@@ -35,7 +35,7 @@ struct _IdeClangPreferencesAddin
 
 static void preferences_addin_iface_init (IdePreferencesAddinInterface *iface);
 
-G_DEFINE_TYPE_EXTENDED (IdeClangPreferencesAddin, ide_clang_preferences_addin, G_TYPE_OBJECT, 0,
+G_DEFINE_TYPE_EXTENDED (IdeClangPreferencesAddin, ide_clang_preferences_addin, G_TYPE_OBJECT, 
G_TYPE_FLAG_FINAL,
                         G_IMPLEMENT_INTERFACE (IDE_TYPE_PREFERENCES_ADDIN,
                                                preferences_addin_iface_init))
 
diff --git a/src/plugins/clang/ide-clang-proposals.c b/src/plugins/clang/ide-clang-proposals.c
index e28c2204e..a0a924b9d 100644
--- a/src/plugins/clang/ide-clang-proposals.c
+++ b/src/plugins/clang/ide-clang-proposals.c
@@ -133,7 +133,7 @@ enum {
 
 static void list_model_iface_init (GListModelInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IdeClangProposals, ide_clang_proposals, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeClangProposals, ide_clang_proposals, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, list_model_iface_init))
 
 static GParamSpec *properties [N_PROPS];
diff --git a/src/plugins/clang/ide-clang-rename-provider.c b/src/plugins/clang/ide-clang-rename-provider.c
index af9cf502d..bd77aa6fa 100644
--- a/src/plugins/clang/ide-clang-rename-provider.c
+++ b/src/plugins/clang/ide-clang-rename-provider.c
@@ -262,7 +262,7 @@ rename_provider_iface_init (IdeRenameProviderInterface *iface)
   iface->rename_finish = ide_clang_rename_provider_rename_finish;
 }
 
-G_DEFINE_TYPE_WITH_CODE (IdeClangRenameProvider, ide_clang_rename_provider, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeClangRenameProvider, ide_clang_rename_provider, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_RENAME_PROVIDER, rename_provider_iface_init))
 
 static void
diff --git a/src/plugins/clang/ide-clang-symbol-node.c b/src/plugins/clang/ide-clang-symbol-node.c
index 92cbe32d6..9ce94e5c5 100644
--- a/src/plugins/clang/ide-clang-symbol-node.c
+++ b/src/plugins/clang/ide-clang-symbol-node.c
@@ -32,7 +32,7 @@ struct _IdeClangSymbolNode
   GVariant      *children;
 };
 
-G_DEFINE_TYPE (IdeClangSymbolNode, ide_clang_symbol_node, IDE_TYPE_SYMBOL_NODE)
+G_DEFINE_FINAL_TYPE (IdeClangSymbolNode, ide_clang_symbol_node, IDE_TYPE_SYMBOL_NODE)
 
 IdeSymbolNode *
 ide_clang_symbol_node_new (GVariant *node)
diff --git a/src/plugins/clang/ide-clang-symbol-resolver.c b/src/plugins/clang/ide-clang-symbol-resolver.c
index 33bf47314..90406c636 100644
--- a/src/plugins/clang/ide-clang-symbol-resolver.c
+++ b/src/plugins/clang/ide-clang-symbol-resolver.c
@@ -34,7 +34,7 @@ struct _IdeClangSymbolResolver
 
 static void symbol_resolver_iface_init (IdeSymbolResolverInterface *iface);
 
-G_DEFINE_TYPE_EXTENDED (IdeClangSymbolResolver, ide_clang_symbol_resolver, IDE_TYPE_OBJECT, 0,
+G_DEFINE_TYPE_EXTENDED (IdeClangSymbolResolver, ide_clang_symbol_resolver, IDE_TYPE_OBJECT, 
G_TYPE_FLAG_FINAL,
                         G_IMPLEMENT_INTERFACE (IDE_TYPE_SYMBOL_RESOLVER, symbol_resolver_iface_init))
 
 static void
diff --git a/src/plugins/clang/ide-clang-symbol-tree.c b/src/plugins/clang/ide-clang-symbol-tree.c
index 82e369266..f2952a105 100644
--- a/src/plugins/clang/ide-clang-symbol-tree.c
+++ b/src/plugins/clang/ide-clang-symbol-tree.c
@@ -35,7 +35,7 @@ struct _IdeClangSymbolTree
 
 static void symbol_tree_iface_init (IdeSymbolTreeInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IdeClangSymbolTree, ide_clang_symbol_tree, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeClangSymbolTree, ide_clang_symbol_tree, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_SYMBOL_TREE, symbol_tree_iface_init))
 
 enum {
diff --git a/src/plugins/clang/ide-clang.c b/src/plugins/clang/ide-clang.c
index b16ea8aa0..26dfc457d 100644
--- a/src/plugins/clang/ide-clang.c
+++ b/src/plugins/clang/ide-clang.c
@@ -62,7 +62,7 @@ typedef struct
   guint                 len;
 } UnsavedFiles;
 
-G_DEFINE_TYPE (IdeClang, ide_clang, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeClang, ide_clang, G_TYPE_OBJECT)
 
 static void
 unsaved_files_free (UnsavedFiles *uf)
diff --git a/src/plugins/cmake/gbp-cmake-build-stage-cross-file.c 
b/src/plugins/cmake/gbp-cmake-build-stage-cross-file.c
index f3a0aebe6..93e7a693a 100644
--- a/src/plugins/cmake/gbp-cmake-build-stage-cross-file.c
+++ b/src/plugins/cmake/gbp-cmake-build-stage-cross-file.c
@@ -32,7 +32,7 @@ struct _GbpCMakeBuildStageCrossFile
   IdeToolchain *toolchain;
 };
 
-G_DEFINE_TYPE (GbpCMakeBuildStageCrossFile, gbp_cmake_build_stage_cross_file, IDE_TYPE_PIPELINE_STAGE)
+G_DEFINE_FINAL_TYPE (GbpCMakeBuildStageCrossFile, gbp_cmake_build_stage_cross_file, IDE_TYPE_PIPELINE_STAGE)
 
 static void
 _gbp_cmake_file_set (gchar       **content,
diff --git a/src/plugins/cmake/gbp-cmake-build-system-discovery.c 
b/src/plugins/cmake/gbp-cmake-build-system-discovery.c
index d06cfa91a..fc016a02f 100644
--- a/src/plugins/cmake/gbp-cmake-build-system-discovery.c
+++ b/src/plugins/cmake/gbp-cmake-build-system-discovery.c
@@ -29,7 +29,7 @@ struct _GbpCmakeBuildSystemDiscovery
   IdeSimpleBuildSystemDiscovery parent;
 };
 
-G_DEFINE_TYPE (GbpCmakeBuildSystemDiscovery,
+G_DEFINE_FINAL_TYPE (GbpCmakeBuildSystemDiscovery,
                gbp_cmake_build_system_discovery,
                IDE_TYPE_SIMPLE_BUILD_SYSTEM_DISCOVERY)
 
diff --git a/src/plugins/cmake/gbp-cmake-build-system.c b/src/plugins/cmake/gbp-cmake-build-system.c
index 67616c02f..b37e54d72 100644
--- a/src/plugins/cmake/gbp-cmake-build-system.c
+++ b/src/plugins/cmake/gbp-cmake-build-system.c
@@ -38,7 +38,7 @@ struct _GbpCMakeBuildSystem
 static void async_initable_iface_init (GAsyncInitableIface     *iface);
 static void build_system_iface_init   (IdeBuildSystemInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (GbpCMakeBuildSystem, gbp_cmake_build_system, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpCMakeBuildSystem, gbp_cmake_build_system, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (G_TYPE_ASYNC_INITABLE, async_initable_iface_init)
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_BUILD_SYSTEM, build_system_iface_init))
 
diff --git a/src/plugins/cmake/gbp-cmake-build-target.c b/src/plugins/cmake/gbp-cmake-build-target.c
index d2c8befa7..015c49ab2 100644
--- a/src/plugins/cmake/gbp-cmake-build-target.c
+++ b/src/plugins/cmake/gbp-cmake-build-target.c
@@ -58,7 +58,7 @@ build_target_iface_init (IdeBuildTargetInterface *iface)
   iface->get_name = gbp_cmake_build_target_get_name;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpCMakeBuildTarget, gbp_cmake_build_target, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpCMakeBuildTarget, gbp_cmake_build_target, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_BUILD_TARGET, build_target_iface_init))
 
 static void
diff --git a/src/plugins/cmake/gbp-cmake-pipeline-addin.c b/src/plugins/cmake/gbp-cmake-pipeline-addin.c
index da09dd4e7..0a24049b6 100644
--- a/src/plugins/cmake/gbp-cmake-pipeline-addin.c
+++ b/src/plugins/cmake/gbp-cmake-pipeline-addin.c
@@ -37,7 +37,7 @@ static const gchar *ninja_names[] = { "ninja-build", "ninja" };
 
 static void pipeline_addin_iface_init (IdePipelineAddinInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (GbpCMakePipelineAddin, gbp_cmake_pipeline_addin, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpCMakePipelineAddin, gbp_cmake_pipeline_addin, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_PIPELINE_ADDIN, pipeline_addin_iface_init))
 
 static void
diff --git a/src/plugins/cmake/gbp-cmake-toolchain-provider.c 
b/src/plugins/cmake/gbp-cmake-toolchain-provider.c
index db89fe106..4b24443ba 100644
--- a/src/plugins/cmake/gbp-cmake-toolchain-provider.c
+++ b/src/plugins/cmake/gbp-cmake-toolchain-provider.c
@@ -222,7 +222,7 @@ toolchain_provider_iface_init (IdeToolchainProviderInterface *iface)
   iface->unload = gbp_cmake_toolchain_provider_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpCMakeToolchainProvider,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpCMakeToolchainProvider,
                          gbp_cmake_toolchain_provider,
                          IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_TOOLCHAIN_PROVIDER,
diff --git a/src/plugins/cmake/gbp-cmake-toolchain.c b/src/plugins/cmake/gbp-cmake-toolchain.c
index b74b95fd9..75d10b50d 100644
--- a/src/plugins/cmake/gbp-cmake-toolchain.c
+++ b/src/plugins/cmake/gbp-cmake-toolchain.c
@@ -35,7 +35,7 @@ struct _GbpCMakeToolchain
   gchar                  *file_path;
 };
 
-G_DEFINE_TYPE (GbpCMakeToolchain, gbp_cmake_toolchain, IDE_TYPE_SIMPLE_TOOLCHAIN)
+G_DEFINE_FINAL_TYPE (GbpCMakeToolchain, gbp_cmake_toolchain, IDE_TYPE_SIMPLE_TOOLCHAIN)
 
 enum {
   PROP_0,
diff --git a/src/plugins/code-index/gbp-code-index-application-addin.c 
b/src/plugins/code-index/gbp-code-index-application-addin.c
index 58ff97453..61d471cf9 100644
--- a/src/plugins/code-index/gbp-code-index-application-addin.c
+++ b/src/plugins/code-index/gbp-code-index-application-addin.c
@@ -333,7 +333,7 @@ application_addin_iface_init (IdeApplicationAddinInterface *iface)
   iface->handle_command_line = gbp_code_index_application_addin_handle_command_line;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpCodeIndexApplicationAddin, gbp_code_index_application_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpCodeIndexApplicationAddin, gbp_code_index_application_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_APPLICATION_ADDIN, application_addin_iface_init))
 
 static void
diff --git a/src/plugins/code-index/gbp-code-index-builder.c b/src/plugins/code-index/gbp-code-index-builder.c
index b16fba674..9626bd9eb 100644
--- a/src/plugins/code-index/gbp-code-index-builder.c
+++ b/src/plugins/code-index/gbp-code-index-builder.c
@@ -49,7 +49,7 @@ typedef struct
   guint completed;
 } Run;
 
-G_DEFINE_TYPE (GbpCodeIndexBuilder, gbp_code_index_builder, IDE_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (GbpCodeIndexBuilder, gbp_code_index_builder, IDE_TYPE_OBJECT)
 
 static void
 run_free (Run *state)
diff --git a/src/plugins/code-index/gbp-code-index-executor.c 
b/src/plugins/code-index/gbp-code-index-executor.c
index 2f3d91d55..1153fa960 100644
--- a/src/plugins/code-index/gbp-code-index-executor.c
+++ b/src/plugins/code-index/gbp-code-index-executor.c
@@ -49,7 +49,7 @@ typedef struct
   guint64           num_completed;
 } Execute;
 
-G_DEFINE_TYPE (GbpCodeIndexExecutor, gbp_code_index_executor, IDE_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (GbpCodeIndexExecutor, gbp_code_index_executor, IDE_TYPE_OBJECT)
 
 static void
 execute_free (Execute *exec)
diff --git a/src/plugins/code-index/gbp-code-index-plan.c b/src/plugins/code-index/gbp-code-index-plan.c
index da2ea9fab..670311888 100644
--- a/src/plugins/code-index/gbp-code-index-plan.c
+++ b/src/plugins/code-index/gbp-code-index-plan.c
@@ -61,7 +61,7 @@ typedef struct
   GFile *workdir;
 } CullIndexed;
 
-G_DEFINE_TYPE (GbpCodeIndexPlan, gbp_code_index_plan, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (GbpCodeIndexPlan, gbp_code_index_plan, G_TYPE_OBJECT)
 
 static void
 directory_info_free (DirectoryInfo *info)
diff --git a/src/plugins/code-index/gbp-code-index-service.c b/src/plugins/code-index/gbp-code-index-service.c
index 6cb14f3f1..894396eeb 100644
--- a/src/plugins/code-index/gbp-code-index-service.c
+++ b/src/plugins/code-index/gbp-code-index-service.c
@@ -67,7 +67,7 @@ enum {
   N_PROPS
 };
 
-G_DEFINE_TYPE (GbpCodeIndexService, gbp_code_index_service, IDE_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (GbpCodeIndexService, gbp_code_index_service, IDE_TYPE_OBJECT)
 
 static void     gbp_code_index_service_index_async    (GbpCodeIndexService  *self,
                                                        GCancellable         *cancellable,
diff --git a/src/plugins/code-index/gbp-code-index-workbench-addin.c 
b/src/plugins/code-index/gbp-code-index-workbench-addin.c
index dae6a2019..91befc898 100644
--- a/src/plugins/code-index/gbp-code-index-workbench-addin.c
+++ b/src/plugins/code-index/gbp-code-index-workbench-addin.c
@@ -154,7 +154,7 @@ DZL_DEFINE_ACTION_GROUP (GbpCodeIndexWorkbenchAddin, gbp_code_index_workbench_ad
   { "paused", NULL, NULL, "false", gbp_code_index_workbench_addin_paused },
 })
 
-G_DEFINE_TYPE_WITH_CODE (GbpCodeIndexWorkbenchAddin, gbp_code_index_workbench_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpCodeIndexWorkbenchAddin, gbp_code_index_workbench_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (G_TYPE_ACTION_GROUP,
                                                 gbp_code_index_workbench_addin_init_action_group)
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_WORKBENCH_ADDIN, workbench_addin_iface_init))
diff --git a/src/plugins/code-index/ide-code-index-index.c b/src/plugins/code-index/ide-code-index-index.c
index cb7fe90b5..c14d27e81 100644
--- a/src/plugins/code-index/ide-code-index-index.c
+++ b/src/plugins/code-index/ide-code-index-index.c
@@ -69,7 +69,7 @@ typedef struct
   guint               match_num;
 } FuzzyMatch;
 
-G_DEFINE_TYPE (IdeCodeIndexIndex, ide_code_index_index, IDE_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeCodeIndexIndex, ide_code_index_index, IDE_TYPE_OBJECT)
 
 static void directory_index_free (DirectoryIndex *data);
 
diff --git a/src/plugins/code-index/ide-code-index-search-provider.c 
b/src/plugins/code-index/ide-code-index-search-provider.c
index 4648820f3..5e0e6ae0e 100644
--- a/src/plugins/code-index/ide-code-index-search-provider.c
+++ b/src/plugins/code-index/ide-code-index-search-provider.c
@@ -133,7 +133,7 @@ search_provider_iface_init (IdeSearchProviderInterface *iface)
 
 struct _IdeCodeIndexSearchProvider { IdeObject parent; };
 
-G_DEFINE_TYPE_WITH_CODE (IdeCodeIndexSearchProvider,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeCodeIndexSearchProvider,
                          ide_code_index_search_provider,
                          IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_SEARCH_PROVIDER, search_provider_iface_init))
diff --git a/src/plugins/code-index/ide-code-index-search-result.c 
b/src/plugins/code-index/ide-code-index-search-result.c
index d3a6f855c..a0b03e549 100644
--- a/src/plugins/code-index/ide-code-index-search-result.c
+++ b/src/plugins/code-index/ide-code-index-search-result.c
@@ -33,7 +33,7 @@ struct _IdeCodeIndexSearchResult
   IdeLocation     *location;
 };
 
-G_DEFINE_TYPE (IdeCodeIndexSearchResult, ide_code_index_search_result, IDE_TYPE_SEARCH_RESULT)
+G_DEFINE_FINAL_TYPE (IdeCodeIndexSearchResult, ide_code_index_search_result, IDE_TYPE_SEARCH_RESULT)
 
 enum {
   PROP_0,
diff --git a/src/plugins/code-index/ide-code-index-symbol-resolver.c 
b/src/plugins/code-index/ide-code-index-symbol-resolver.c
index 263db0a21..84b2ee95d 100644
--- a/src/plugins/code-index/ide-code-index-symbol-resolver.c
+++ b/src/plugins/code-index/ide-code-index-symbol-resolver.c
@@ -225,7 +225,7 @@ symbol_resolver_iface_init (IdeSymbolResolverInterface *iface)
 
 struct _IdeCodeIndexSymbolResolver { IdeObject parent_instance; };
 
-G_DEFINE_TYPE_WITH_CODE (IdeCodeIndexSymbolResolver, ide_code_index_symbol_resolver, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeCodeIndexSymbolResolver, ide_code_index_symbol_resolver, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_SYMBOL_RESOLVER, symbol_resolver_iface_init))
 
 static void
diff --git a/src/plugins/codespell/ide-codespell-diagnostic-provider.c 
b/src/plugins/codespell/ide-codespell-diagnostic-provider.c
index 0cfbc8761..1baf99d08 100644
--- a/src/plugins/codespell/ide-codespell-diagnostic-provider.c
+++ b/src/plugins/codespell/ide-codespell-diagnostic-provider.c
@@ -27,7 +27,7 @@ struct _IdeCodespellDiagnosticProvider
 
 static void diagnostic_provider_iface_init (IdeDiagnosticProviderInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IdeCodespellDiagnosticProvider,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeCodespellDiagnosticProvider,
                          ide_codespell_diagnostic_provider,
                          IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_DIAGNOSTIC_PROVIDER,
diff --git a/src/plugins/codeui/gbp-codeui-buffer-addin.c b/src/plugins/codeui/gbp-codeui-buffer-addin.c
index 9abd16a27..0eff7d3ac 100644
--- a/src/plugins/codeui/gbp-codeui-buffer-addin.c
+++ b/src/plugins/codeui/gbp-codeui-buffer-addin.c
@@ -213,7 +213,7 @@ buffer_addin_iface_init (IdeBufferAddinInterface *iface)
   iface->unload = gbp_codeui_buffer_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpCodeuiBufferAddin, gbp_codeui_buffer_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpCodeuiBufferAddin, gbp_codeui_buffer_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_BUFFER_ADDIN, buffer_addin_iface_init))
 
 static void
diff --git a/src/plugins/codeui/gbp-codeui-tree-addin.c b/src/plugins/codeui/gbp-codeui-tree-addin.c
index 6c1d106eb..c5180b746 100644
--- a/src/plugins/codeui/gbp-codeui-tree-addin.c
+++ b/src/plugins/codeui/gbp-codeui-tree-addin.c
@@ -75,7 +75,7 @@ tree_addin_iface_init (IdeTreeAddinInterface *iface)
   iface->cell_data_func = gbp_codeui_tree_addin_cell_data_func;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpCodeuiTreeAddin, gbp_codeui_tree_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpCodeuiTreeAddin, gbp_codeui_tree_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_TREE_ADDIN, tree_addin_iface_init))
 
 static void
diff --git a/src/plugins/color-picker/gb-color-picker-document-monitor.c 
b/src/plugins/color-picker/gb-color-picker-document-monitor.c
index f398a4fe8..143365349 100644
--- a/src/plugins/color-picker/gb-color-picker-document-monitor.c
+++ b/src/plugins/color-picker/gb-color-picker-document-monitor.c
@@ -56,7 +56,7 @@ typedef struct
   guint                         uncolorize : 1;
 } QueuedColorize;
 
-G_DEFINE_TYPE (GbColorPickerDocumentMonitor, gb_color_picker_document_monitor, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (GbColorPickerDocumentMonitor, gb_color_picker_document_monitor, G_TYPE_OBJECT)
 
 enum {
   PROP_0,
diff --git a/src/plugins/color-picker/gb-color-picker-editor-addin.c 
b/src/plugins/color-picker/gb-color-picker-editor-addin.c
index 84b1fc3b2..11028c6db 100644
--- a/src/plugins/color-picker/gb-color-picker-editor-addin.c
+++ b/src/plugins/color-picker/gb-color-picker-editor-addin.c
@@ -367,7 +367,7 @@ editor_addin_iface_init (IdeEditorAddinInterface *iface)
   iface->page_set = gb_color_picker_editor_addin_page_set;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbColorPickerEditorAddin,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbColorPickerEditorAddin,
                          gb_color_picker_editor_addin,
                          G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_EDITOR_ADDIN,
diff --git a/src/plugins/color-picker/gb-color-picker-editor-page-addin.c 
b/src/plugins/color-picker/gb-color-picker-editor-page-addin.c
index cdeb9e1ab..65c58aa43 100644
--- a/src/plugins/color-picker/gb-color-picker-editor-page-addin.c
+++ b/src/plugins/color-picker/gb-color-picker-editor-page-addin.c
@@ -156,7 +156,7 @@ editor_page_addin_iface_init (IdeEditorPageAddinInterface *iface)
   iface->unload = gb_color_picker_editor_page_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbColorPickerEditorPageAddin, gb_color_picker_editor_page_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbColorPickerEditorPageAddin, gb_color_picker_editor_page_addin, 
G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_EDITOR_PAGE_ADDIN, editor_page_addin_iface_init))
 
 static void
diff --git a/src/plugins/color-picker/gb-color-picker-prefs-list.c 
b/src/plugins/color-picker/gb-color-picker-prefs-list.c
index 270c6cf67..79b6a4b12 100644
--- a/src/plugins/color-picker/gb-color-picker-prefs-list.c
+++ b/src/plugins/color-picker/gb-color-picker-prefs-list.c
@@ -25,7 +25,7 @@ struct _GbColorPickerPrefsList
   GtkListBox parent_instance;
 };
 
-G_DEFINE_TYPE (GbColorPickerPrefsList, gb_color_picker_prefs_list, GTK_TYPE_LIST_BOX)
+G_DEFINE_FINAL_TYPE (GbColorPickerPrefsList, gb_color_picker_prefs_list, GTK_TYPE_LIST_BOX)
 
 GbColorPickerPrefsList *
 gb_color_picker_prefs_list_new (void)
diff --git a/src/plugins/color-picker/gb-color-picker-prefs-palette-list.c 
b/src/plugins/color-picker/gb-color-picker-prefs-palette-list.c
index 9c63824f4..d6cb58e23 100644
--- a/src/plugins/color-picker/gb-color-picker-prefs-palette-list.c
+++ b/src/plugins/color-picker/gb-color-picker-prefs-palette-list.c
@@ -31,7 +31,7 @@ struct _GbColorPickerPrefsPaletteList
   GtkWidget     *plus_button;
 };
 
-G_DEFINE_TYPE (GbColorPickerPrefsPaletteList, gb_color_picker_prefs_palette_list, GTK_TYPE_BOX)
+G_DEFINE_FINAL_TYPE (GbColorPickerPrefsPaletteList, gb_color_picker_prefs_palette_list, GTK_TYPE_BOX)
 
 enum {
   ADDED,
diff --git a/src/plugins/color-picker/gb-color-picker-prefs-palette-row.c 
b/src/plugins/color-picker/gb-color-picker-prefs-palette-row.c
index d1326f042..918bbab02 100644
--- a/src/plugins/color-picker/gb-color-picker-prefs-palette-row.c
+++ b/src/plugins/color-picker/gb-color-picker-prefs-palette-row.c
@@ -47,7 +47,7 @@ struct _GbColorPickerPrefsPaletteRow
   guint              needs_attention : 1;
 };
 
-G_DEFINE_TYPE (GbColorPickerPrefsPaletteRow, gb_color_picker_prefs_palette_row, DZL_TYPE_PREFERENCES_BIN)
+G_DEFINE_FINAL_TYPE (GbColorPickerPrefsPaletteRow, gb_color_picker_prefs_palette_row, 
DZL_TYPE_PREFERENCES_BIN)
 
 enum {
   PROP_0,
diff --git a/src/plugins/color-picker/gb-color-picker-prefs.c 
b/src/plugins/color-picker/gb-color-picker-prefs.c
index 3e4d8e0bb..14a8a7d91 100644
--- a/src/plugins/color-picker/gb-color-picker-prefs.c
+++ b/src/plugins/color-picker/gb-color-picker-prefs.c
@@ -60,7 +60,7 @@ struct _GbColorPickerPrefs
   GSettings                      *components_settings;
 };
 
-G_DEFINE_TYPE (GbColorPickerPrefs, gb_color_picker_prefs, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (GbColorPickerPrefs, gb_color_picker_prefs, G_TYPE_OBJECT)
 
 enum {
   PROP_0,
diff --git a/src/plugins/command-bar/gbp-command-bar-command-provider.c 
b/src/plugins/command-bar/gbp-command-bar-command-provider.c
index b8d0c861c..72dd57455 100644
--- a/src/plugins/command-bar/gbp-command-bar-command-provider.c
+++ b/src/plugins/command-bar/gbp-command-bar-command-provider.c
@@ -168,7 +168,7 @@ command_provider_iface_init (IdeCommandProviderInterface *iface)
   iface->query_finish = gbp_command_bar_command_provider_query_finish;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpCommandBarCommandProvider,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpCommandBarCommandProvider,
                          gbp_command_bar_command_provider,
                          IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_COMMAND_PROVIDER,
diff --git a/src/plugins/command-bar/gbp-command-bar-suggestion.c 
b/src/plugins/command-bar/gbp-command-bar-suggestion.c
index da0f10d0f..863ed120b 100644
--- a/src/plugins/command-bar/gbp-command-bar-suggestion.c
+++ b/src/plugins/command-bar/gbp-command-bar-suggestion.c
@@ -36,7 +36,7 @@ enum {
   N_PROPS
 };
 
-G_DEFINE_TYPE (GbpCommandBarSuggestion, gbp_command_bar_suggestion, DZL_TYPE_SUGGESTION)
+G_DEFINE_FINAL_TYPE (GbpCommandBarSuggestion, gbp_command_bar_suggestion, DZL_TYPE_SUGGESTION)
 
 static GParamSpec *properties [N_PROPS];
 
diff --git a/src/plugins/command-bar/gbp-command-bar-workspace-addin.c 
b/src/plugins/command-bar/gbp-command-bar-workspace-addin.c
index fb9ca10f4..6dee9606d 100644
--- a/src/plugins/command-bar/gbp-command-bar-workspace-addin.c
+++ b/src/plugins/command-bar/gbp-command-bar-workspace-addin.c
@@ -151,7 +151,7 @@ workspace_addin_iface_init (IdeWorkspaceAddinInterface *iface)
   iface->unload = gbp_command_bar_workspace_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpCommandBarWorkspaceAddin, gbp_command_bar_workspace_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpCommandBarWorkspaceAddin, gbp_command_bar_workspace_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_WORKSPACE_ADDIN, workspace_addin_iface_init))
 
 static void
diff --git a/src/plugins/command-bar/gbp-command-bar.c b/src/plugins/command-bar/gbp-command-bar.c
index 1c5202ab6..4dde7e60d 100644
--- a/src/plugins/command-bar/gbp-command-bar.c
+++ b/src/plugins/command-bar/gbp-command-bar.c
@@ -36,7 +36,7 @@ struct _GbpCommandBar
   guint               queued_dismiss;
 };
 
-G_DEFINE_TYPE (GbpCommandBar, gbp_command_bar, DZL_TYPE_BIN)
+G_DEFINE_FINAL_TYPE (GbpCommandBar, gbp_command_bar, DZL_TYPE_BIN)
 
 static void
 replace_model (GbpCommandBar *self,
diff --git a/src/plugins/command-bar/gbp-gaction-command.c b/src/plugins/command-bar/gbp-gaction-command.c
index 94f443611..a373956f4 100644
--- a/src/plugins/command-bar/gbp-gaction-command.c
+++ b/src/plugins/command-bar/gbp-gaction-command.c
@@ -92,7 +92,7 @@ command_iface_init (IdeCommandInterface *iface)
   iface->get_priority = gbp_gaction_command_get_priority;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpGactionCommand, gbp_gaction_command, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpGactionCommand, gbp_gaction_command, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_COMMAND, command_iface_init))
 
 static void
diff --git a/src/plugins/comment-code/gbp-comment-code-editor-page-addin.c 
b/src/plugins/comment-code/gbp-comment-code-editor-page-addin.c
index 1516dd5a3..664796787 100644
--- a/src/plugins/comment-code/gbp-comment-code-editor-page-addin.c
+++ b/src/plugins/comment-code/gbp-comment-code-editor-page-addin.c
@@ -38,7 +38,7 @@ struct _GbpCommentCodeEditorPageAddin
 
 static void editor_view_addin_iface_init (IdeEditorPageAddinInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (GbpCommentCodeEditorPageAddin, gbp_comment_code_editor_page_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpCommentCodeEditorPageAddin, gbp_comment_code_editor_page_addin, 
G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_EDITOR_PAGE_ADDIN, editor_view_addin_iface_init))
 
 /* If there's only empty lines, G_MAXINT is returned */
diff --git a/src/plugins/create-project/gbp-create-project-application-addin.c 
b/src/plugins/create-project/gbp-create-project-application-addin.c
index a38c5c8c2..d99dd8220 100644
--- a/src/plugins/create-project/gbp-create-project-application-addin.c
+++ b/src/plugins/create-project/gbp-create-project-application-addin.c
@@ -147,7 +147,7 @@ cmdline_addin_iface_init (IdeApplicationAddinInterface *iface)
   iface->handle_command_line = gbp_create_project_application_addin_handle_command_line;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpCreateProjectApplicationAddin, gbp_create_project_application_addin, 
G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpCreateProjectApplicationAddin, gbp_create_project_application_addin, 
G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_APPLICATION_ADDIN, cmdline_addin_iface_init))
 
 static void
diff --git a/src/plugins/create-project/gbp-create-project-surface.c 
b/src/plugins/create-project/gbp-create-project-surface.c
index 7fc7757c1..88157dd86 100644
--- a/src/plugins/create-project/gbp-create-project-surface.c
+++ b/src/plugins/create-project/gbp-create-project-surface.c
@@ -61,7 +61,7 @@ enum {
 
 static GParamSpec *properties [N_PROPS];
 
-G_DEFINE_TYPE (GbpCreateProjectSurface, gbp_create_project_surface, IDE_TYPE_SURFACE)
+G_DEFINE_FINAL_TYPE (GbpCreateProjectSurface, gbp_create_project_surface, IDE_TYPE_SURFACE)
 
 static gboolean
 is_preferred (const gchar *name)
diff --git a/src/plugins/create-project/gbp-create-project-template-icon.c 
b/src/plugins/create-project/gbp-create-project-template-icon.c
index 738d9a376..0642c460d 100644
--- a/src/plugins/create-project/gbp-create-project-template-icon.c
+++ b/src/plugins/create-project/gbp-create-project-template-icon.c
@@ -38,7 +38,7 @@ enum {
 
 static GParamSpec *properties [N_PROPS];
 
-G_DEFINE_TYPE (GbpCreateProjectTemplateIcon, gbp_create_project_template_icon, GTK_TYPE_BIN)
+G_DEFINE_FINAL_TYPE (GbpCreateProjectTemplateIcon, gbp_create_project_template_icon, GTK_TYPE_BIN)
 
 static void
 gbp_create_project_template_icon_get_property (GObject    *object,
diff --git a/src/plugins/create-project/gbp-create-project-workspace-addin.c 
b/src/plugins/create-project/gbp-create-project-workspace-addin.c
index 2ec83d396..b8000ed6a 100644
--- a/src/plugins/create-project/gbp-create-project-workspace-addin.c
+++ b/src/plugins/create-project/gbp-create-project-workspace-addin.c
@@ -78,7 +78,7 @@ workspace_addin_iface_init (IdeWorkspaceAddinInterface *iface)
   iface->unload = gbp_create_project_workspace_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpCreateProjectWorkspaceAddin, gbp_create_project_workspace_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpCreateProjectWorkspaceAddin, gbp_create_project_workspace_addin, 
G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_WORKSPACE_ADDIN, workspace_addin_iface_init))
 
 static void
diff --git a/src/plugins/ctags/gbp-ctags-workbench-addin.c b/src/plugins/ctags/gbp-ctags-workbench-addin.c
index cf4be0fee..aa3ea4fb4 100644
--- a/src/plugins/ctags/gbp-ctags-workbench-addin.c
+++ b/src/plugins/ctags/gbp-ctags-workbench-addin.c
@@ -166,7 +166,7 @@ workbench_addin_iface_init (IdeWorkbenchAddinInterface *iface)
   iface->workspace_removed = gbp_ctags_workbench_addin_workspace_removed;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpCtagsWorkbenchAddin, gbp_ctags_workbench_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpCtagsWorkbenchAddin, gbp_ctags_workbench_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_WORKBENCH_ADDIN,
                                                 workbench_addin_iface_init))
 
diff --git a/src/plugins/ctags/ide-ctags-builder.c b/src/plugins/ctags/ide-ctags-builder.c
index 31a0f101d..2fb1a4648 100644
--- a/src/plugins/ctags/ide-ctags-builder.c
+++ b/src/plugins/ctags/ide-ctags-builder.c
@@ -39,7 +39,7 @@ typedef struct
 
 static void tags_builder_iface_init (IdeTagsBuilderInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IdeCtagsBuilder, ide_ctags_builder, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeCtagsBuilder, ide_ctags_builder, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_TAGS_BUILDER, tags_builder_iface_init))
 
 static GHashTable *ignored;
diff --git a/src/plugins/ctags/ide-ctags-completion-item.c b/src/plugins/ctags/ide-ctags-completion-item.c
index 20cd61e0c..414e8244f 100644
--- a/src/plugins/ctags/ide-ctags-completion-item.c
+++ b/src/plugins/ctags/ide-ctags-completion-item.c
@@ -27,7 +27,7 @@
 #include "ide-ctags-index.h"
 #include "ide-ctags-results.h"
 
-G_DEFINE_TYPE_WITH_CODE (IdeCtagsCompletionItem,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeCtagsCompletionItem,
                          ide_ctags_completion_item,
                          G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_COMPLETION_PROPOSAL, NULL))
diff --git a/src/plugins/ctags/ide-ctags-completion-provider.c 
b/src/plugins/ctags/ide-ctags-completion-provider.c
index afc9a427a..02756b4d6 100644
--- a/src/plugins/ctags/ide-ctags-completion-provider.c
+++ b/src/plugins/ctags/ide-ctags-completion-provider.c
@@ -34,7 +34,7 @@ static void provider_iface_init (IdeCompletionProviderInterface *iface);
 
 static GHashTable *reserved;
 
-G_DEFINE_TYPE_WITH_CODE (IdeCtagsCompletionProvider,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeCtagsCompletionProvider,
                          ide_ctags_completion_provider,
                          IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_COMPLETION_PROVIDER, provider_iface_init))
diff --git a/src/plugins/ctags/ide-ctags-highlighter.c b/src/plugins/ctags/ide-ctags-highlighter.c
index 1f63c97e4..ca3311794 100644
--- a/src/plugins/ctags/ide-ctags-highlighter.c
+++ b/src/plugins/ctags/ide-ctags-highlighter.c
@@ -38,7 +38,7 @@ struct _IdeCtagsHighlighter
 
 static void highlighter_iface_init (IdeHighlighterInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IdeCtagsHighlighter,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeCtagsHighlighter,
                          ide_ctags_highlighter,
                          IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_HIGHLIGHTER,
diff --git a/src/plugins/ctags/ide-ctags-index.c b/src/plugins/ctags/ide-ctags-index.c
index da1bc7826..de67c0c54 100644
--- a/src/plugins/ctags/ide-ctags-index.c
+++ b/src/plugins/ctags/ide-ctags-index.c
@@ -53,7 +53,7 @@ enum {
 
 static void async_initable_iface_init (GAsyncInitableIface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IdeCtagsIndex, ide_ctags_index, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeCtagsIndex, ide_ctags_index, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (G_TYPE_ASYNC_INITABLE, async_initable_iface_init))
 
 DZL_DEFINE_COUNTER (instances, "IdeCtagsIndex", "Instances", "Number of IdeCtagsIndex instances.")
diff --git a/src/plugins/ctags/ide-ctags-preferences-addin.c b/src/plugins/ctags/ide-ctags-preferences-addin.c
index 586aa55e8..2d9a12a11 100644
--- a/src/plugins/ctags/ide-ctags-preferences-addin.c
+++ b/src/plugins/ctags/ide-ctags-preferences-addin.c
@@ -75,7 +75,7 @@ prefs_addin_iface_init (IdePreferencesAddinInterface *iface)
   iface->unload = ide_ctags_preferences_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (IdeCtagsPreferencesAddin, ide_ctags_preferences_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeCtagsPreferencesAddin, ide_ctags_preferences_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_PREFERENCES_ADDIN, prefs_addin_iface_init))
 
 static void
diff --git a/src/plugins/ctags/ide-ctags-results.c b/src/plugins/ctags/ide-ctags-results.c
index ba0c2c2f5..ce5a0ae15 100644
--- a/src/plugins/ctags/ide-ctags-results.c
+++ b/src/plugins/ctags/ide-ctags-results.c
@@ -96,7 +96,7 @@ list_model_iface_init (GListModelInterface *iface)
   iface->get_item = ide_ctags_results_get_item;
 }
 
-G_DEFINE_TYPE_WITH_CODE (IdeCtagsResults, ide_ctags_results, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeCtagsResults, ide_ctags_results, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, list_model_iface_init))
 
 static void
diff --git a/src/plugins/ctags/ide-ctags-service.c b/src/plugins/ctags/ide-ctags-service.c
index d1281553b..e6f9d6b83 100644
--- a/src/plugins/ctags/ide-ctags-service.c
+++ b/src/plugins/ctags/ide-ctags-service.c
@@ -67,7 +67,7 @@ typedef struct
   gboolean         recursive;
 } QueuedRequest;
 
-G_DEFINE_TYPE (IdeCtagsService, ide_ctags_service, IDE_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeCtagsService, ide_ctags_service, IDE_TYPE_OBJECT)
 
 enum {
   PROP_0,
diff --git a/src/plugins/ctags/ide-ctags-symbol-node.c b/src/plugins/ctags/ide-ctags-symbol-node.c
index 94a96f1f6..fec8b8f52 100644
--- a/src/plugins/ctags/ide-ctags-symbol-node.c
+++ b/src/plugins/ctags/ide-ctags-symbol-node.c
@@ -31,7 +31,7 @@ struct _IdeCtagsSymbolNode
   GPtrArray                *children;
 };
 
-G_DEFINE_TYPE (IdeCtagsSymbolNode, ide_ctags_symbol_node, IDE_TYPE_SYMBOL_NODE)
+G_DEFINE_FINAL_TYPE (IdeCtagsSymbolNode, ide_ctags_symbol_node, IDE_TYPE_SYMBOL_NODE)
 
 static void
 ide_ctags_symbol_node_get_location_cb (GObject      *object,
diff --git a/src/plugins/ctags/ide-ctags-symbol-resolver.c b/src/plugins/ctags/ide-ctags-symbol-resolver.c
index 17d53c3c4..7ee08a1f9 100644
--- a/src/plugins/ctags/ide-ctags-symbol-resolver.c
+++ b/src/plugins/ctags/ide-ctags-symbol-resolver.c
@@ -49,7 +49,7 @@ enum {
 
 static void symbol_resolver_iface_init (IdeSymbolResolverInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IdeCtagsSymbolResolver,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeCtagsSymbolResolver,
                          ide_ctags_symbol_resolver,
                          IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_SYMBOL_RESOLVER,
diff --git a/src/plugins/ctags/ide-ctags-symbol-tree.c b/src/plugins/ctags/ide-ctags-symbol-tree.c
index 4c6aae7d1..95963d1df 100644
--- a/src/plugins/ctags/ide-ctags-symbol-tree.c
+++ b/src/plugins/ctags/ide-ctags-symbol-tree.c
@@ -71,7 +71,7 @@ symbol_tree_iface_init (IdeSymbolTreeInterface *iface)
   iface->get_nth_child = ide_ctags_symbol_tree_get_nth_child;
 }
 
-G_DEFINE_TYPE_WITH_CODE (IdeCtagsSymbolTree, ide_ctags_symbol_tree, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeCtagsSymbolTree, ide_ctags_symbol_tree, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_SYMBOL_TREE, symbol_tree_iface_init))
 
 /**
diff --git a/src/plugins/debuggerui/ide-debugger-breakpoints-view.c 
b/src/plugins/debuggerui/ide-debugger-breakpoints-view.c
index 2a8da522e..2f9bfbcd0 100644
--- a/src/plugins/debuggerui/ide-debugger-breakpoints-view.c
+++ b/src/plugins/debuggerui/ide-debugger-breakpoints-view.c
@@ -62,7 +62,7 @@ enum {
   N_PROPS
 };
 
-G_DEFINE_TYPE (IdeDebuggerBreakpointsView, ide_debugger_breakpoints_view, GTK_TYPE_BIN)
+G_DEFINE_FINAL_TYPE (IdeDebuggerBreakpointsView, ide_debugger_breakpoints_view, GTK_TYPE_BIN)
 
 static GParamSpec *properties [N_PROPS];
 
diff --git a/src/plugins/debuggerui/ide-debugger-controls.c b/src/plugins/debuggerui/ide-debugger-controls.c
index 331f37536..25d7735fe 100644
--- a/src/plugins/debuggerui/ide-debugger-controls.c
+++ b/src/plugins/debuggerui/ide-debugger-controls.c
@@ -25,7 +25,7 @@ struct _IdeDebuggerControls
   GtkBin parent_instance;
 };
 
-G_DEFINE_TYPE (IdeDebuggerControls, ide_debugger_controls, GTK_TYPE_REVEALER)
+G_DEFINE_FINAL_TYPE (IdeDebuggerControls, ide_debugger_controls, GTK_TYPE_REVEALER)
 
 static void
 ide_debugger_controls_class_init (IdeDebuggerControlsClass *klass)
diff --git a/src/plugins/debuggerui/ide-debugger-disassembly-view.c 
b/src/plugins/debuggerui/ide-debugger-disassembly-view.c
index 433b2ba63..eb88ec1da 100644
--- a/src/plugins/debuggerui/ide-debugger-disassembly-view.c
+++ b/src/plugins/debuggerui/ide-debugger-disassembly-view.c
@@ -41,7 +41,7 @@ struct _IdeDebuggerDisassemblyView
   IdeDebuggerAddress  current_address;
 };
 
-G_DEFINE_TYPE (IdeDebuggerDisassemblyView, ide_debugger_disassembly_view, IDE_TYPE_PAGE)
+G_DEFINE_FINAL_TYPE (IdeDebuggerDisassemblyView, ide_debugger_disassembly_view, IDE_TYPE_PAGE)
 
 static void
 ide_debugger_disassembly_view_destroy (GtkWidget *widget)
diff --git a/src/plugins/debuggerui/ide-debugger-editor-addin.c 
b/src/plugins/debuggerui/ide-debugger-editor-addin.c
index 8c8fc02d2..4307acbc0 100644
--- a/src/plugins/debuggerui/ide-debugger-editor-addin.c
+++ b/src/plugins/debuggerui/ide-debugger-editor-addin.c
@@ -486,7 +486,7 @@ editor_addin_iface_init (IdeEditorAddinInterface *iface)
   iface->unload = ide_debugger_editor_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (IdeDebuggerEditorAddin, ide_debugger_editor_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeDebuggerEditorAddin, ide_debugger_editor_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_EDITOR_ADDIN, editor_addin_iface_init))
 
 static void
diff --git a/src/plugins/debuggerui/ide-debugger-hover-controls.c 
b/src/plugins/debuggerui/ide-debugger-hover-controls.c
index 2a0c8bfe3..009a7b75c 100644
--- a/src/plugins/debuggerui/ide-debugger-hover-controls.c
+++ b/src/plugins/debuggerui/ide-debugger-hover-controls.c
@@ -43,7 +43,7 @@ struct _IdeDebuggerHoverControls
   GtkToggleButton *countpoint;
 };
 
-G_DEFINE_TYPE (IdeDebuggerHoverControls, ide_debugger_hover_controls, GTK_TYPE_BIN)
+G_DEFINE_FINAL_TYPE (IdeDebuggerHoverControls, ide_debugger_hover_controls, GTK_TYPE_BIN)
 
 static void
 ide_debugger_hover_controls_destroy (GtkWidget *widget)
diff --git a/src/plugins/debuggerui/ide-debugger-hover-provider.c 
b/src/plugins/debuggerui/ide-debugger-hover-provider.c
index 03857ece5..108f93e60 100644
--- a/src/plugins/debuggerui/ide-debugger-hover-provider.c
+++ b/src/plugins/debuggerui/ide-debugger-hover-provider.c
@@ -107,7 +107,7 @@ hover_provider_iface_init (IdeHoverProviderInterface *iface)
   iface->hover_finish = ide_debugger_hover_provider_hover_finish;
 }
 
-G_DEFINE_TYPE_WITH_CODE (IdeDebuggerHoverProvider, ide_debugger_hover_provider, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeDebuggerHoverProvider, ide_debugger_hover_provider, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_HOVER_PROVIDER, hover_provider_iface_init))
 
 static void
diff --git a/src/plugins/debuggerui/ide-debugger-libraries-view.c 
b/src/plugins/debuggerui/ide-debugger-libraries-view.c
index b0fb552f7..c06a4473b 100644
--- a/src/plugins/debuggerui/ide-debugger-libraries-view.c
+++ b/src/plugins/debuggerui/ide-debugger-libraries-view.c
@@ -48,7 +48,7 @@ enum {
   N_PROPS
 };
 
-G_DEFINE_TYPE (IdeDebuggerLibrariesView, ide_debugger_libraries_view, GTK_TYPE_BIN)
+G_DEFINE_FINAL_TYPE (IdeDebuggerLibrariesView, ide_debugger_libraries_view, GTK_TYPE_BIN)
 
 static GParamSpec *properties [N_PROPS];
 
diff --git a/src/plugins/debuggerui/ide-debugger-locals-view.c 
b/src/plugins/debuggerui/ide-debugger-locals-view.c
index 4981d1e4e..35bdc4c1b 100644
--- a/src/plugins/debuggerui/ide-debugger-locals-view.c
+++ b/src/plugins/debuggerui/ide-debugger-locals-view.c
@@ -53,7 +53,7 @@ enum {
   N_PROPS
 };
 
-G_DEFINE_TYPE (IdeDebuggerLocalsView, ide_debugger_locals_view, GTK_TYPE_BIN)
+G_DEFINE_FINAL_TYPE (IdeDebuggerLocalsView, ide_debugger_locals_view, GTK_TYPE_BIN)
 
 static GParamSpec *properties [N_PROPS];
 
diff --git a/src/plugins/debuggerui/ide-debugger-log-view.c b/src/plugins/debuggerui/ide-debugger-log-view.c
index 014221816..da8d0e28b 100644
--- a/src/plugins/debuggerui/ide-debugger-log-view.c
+++ b/src/plugins/debuggerui/ide-debugger-log-view.c
@@ -35,7 +35,7 @@ struct _IdeDebuggerLogView
   IdeDebugger *debugger;
 };
 
-G_DEFINE_TYPE (IdeDebuggerLogView, ide_debugger_log_view, GTK_TYPE_BOX)
+G_DEFINE_FINAL_TYPE (IdeDebuggerLogView, ide_debugger_log_view, GTK_TYPE_BOX)
 
 enum {
   PROP_0,
diff --git a/src/plugins/debuggerui/ide-debugger-registers-view.c 
b/src/plugins/debuggerui/ide-debugger-registers-view.c
index fe5e3d9ad..021f0aa8b 100644
--- a/src/plugins/debuggerui/ide-debugger-registers-view.c
+++ b/src/plugins/debuggerui/ide-debugger-registers-view.c
@@ -51,7 +51,7 @@ enum {
   N_PROPS
 };
 
-G_DEFINE_TYPE (IdeDebuggerRegistersView, ide_debugger_registers_view, GTK_TYPE_BIN)
+G_DEFINE_FINAL_TYPE (IdeDebuggerRegistersView, ide_debugger_registers_view, GTK_TYPE_BIN)
 
 static GParamSpec *properties [N_PROPS];
 
diff --git a/src/plugins/debuggerui/ide-debugger-threads-view.c 
b/src/plugins/debuggerui/ide-debugger-threads-view.c
index acdf24af9..c43b97868 100644
--- a/src/plugins/debuggerui/ide-debugger-threads-view.c
+++ b/src/plugins/debuggerui/ide-debugger-threads-view.c
@@ -70,7 +70,7 @@ enum {
   N_SIGNALS
 };
 
-G_DEFINE_TYPE (IdeDebuggerThreadsView, ide_debugger_threads_view, GTK_TYPE_BIN)
+G_DEFINE_FINAL_TYPE (IdeDebuggerThreadsView, ide_debugger_threads_view, GTK_TYPE_BIN)
 
 static GParamSpec *properties [N_PROPS];
 static guint signals [N_SIGNALS];
diff --git a/src/plugins/devhelp/gbp-devhelp-editor-addin.c b/src/plugins/devhelp/gbp-devhelp-editor-addin.c
index 982bd2616..3a8ffca4c 100644
--- a/src/plugins/devhelp/gbp-devhelp-editor-addin.c
+++ b/src/plugins/devhelp/gbp-devhelp-editor-addin.c
@@ -102,7 +102,7 @@ editor_addin_iface_init (IdeEditorAddinInterface *iface)
   iface->unload = gbp_devhelp_editor_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpDevhelpEditorAddin, gbp_devhelp_editor_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpDevhelpEditorAddin, gbp_devhelp_editor_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_EDITOR_ADDIN, editor_addin_iface_init))
 
 static void
diff --git a/src/plugins/devhelp/gbp-devhelp-frame-addin.c b/src/plugins/devhelp/gbp-devhelp-frame-addin.c
index d9c8ae8f3..e3629cc2a 100644
--- a/src/plugins/devhelp/gbp-devhelp-frame-addin.c
+++ b/src/plugins/devhelp/gbp-devhelp-frame-addin.c
@@ -193,7 +193,7 @@ frame_addin_iface_init (IdeFrameAddinInterface *iface)
   iface->set_page = gbp_devhelp_frame_addin_set_view;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpDevhelpFrameAddin,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpDevhelpFrameAddin,
                          gbp_devhelp_frame_addin,
                          G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_FRAME_ADDIN,
diff --git a/src/plugins/devhelp/gbp-devhelp-hover-provider.c 
b/src/plugins/devhelp/gbp-devhelp-hover-provider.c
index 2e10d36e6..c7a1b9119 100644
--- a/src/plugins/devhelp/gbp-devhelp-hover-provider.c
+++ b/src/plugins/devhelp/gbp-devhelp-hover-provider.c
@@ -226,7 +226,7 @@ hover_provider_iface_init (IdeHoverProviderInterface *iface)
   iface->hover_finish = gbp_devhelp_hover_provider_hover_finish;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpDevhelpHoverProvider, gbp_devhelp_hover_provider, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpDevhelpHoverProvider, gbp_devhelp_hover_provider, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_HOVER_PROVIDER,
                                                 hover_provider_iface_init))
 
diff --git a/src/plugins/devhelp/gbp-devhelp-menu-button.c b/src/plugins/devhelp/gbp-devhelp-menu-button.c
index 35287026f..5b66dff35 100644
--- a/src/plugins/devhelp/gbp-devhelp-menu-button.c
+++ b/src/plugins/devhelp/gbp-devhelp-menu-button.c
@@ -34,7 +34,7 @@ struct _GbpDevhelpMenuButton
   DhSidebar     *sidebar;
 };
 
-G_DEFINE_TYPE (GbpDevhelpMenuButton, gbp_devhelp_menu_button, GTK_TYPE_MENU_BUTTON)
+G_DEFINE_FINAL_TYPE (GbpDevhelpMenuButton, gbp_devhelp_menu_button, GTK_TYPE_MENU_BUTTON)
 
 static void
 gbp_devhelp_menu_button_pixbuf_data_func (GtkCellLayout   *cell_layout,
diff --git a/src/plugins/devhelp/gbp-devhelp-page.c b/src/plugins/devhelp/gbp-devhelp-page.c
index d36a34e71..6631d6254 100644
--- a/src/plugins/devhelp/gbp-devhelp-page.c
+++ b/src/plugins/devhelp/gbp-devhelp-page.c
@@ -49,7 +49,7 @@ enum {
   LAST_PROP
 };
 
-G_DEFINE_TYPE (GbpDevhelpPage, gbp_devhelp_page, IDE_TYPE_PAGE)
+G_DEFINE_FINAL_TYPE (GbpDevhelpPage, gbp_devhelp_page, IDE_TYPE_PAGE)
 
 static GParamSpec *properties [LAST_PROP];
 
diff --git a/src/plugins/devhelp/gbp-devhelp-search.c b/src/plugins/devhelp/gbp-devhelp-search.c
index 0dd261ad2..b6a7d093c 100644
--- a/src/plugins/devhelp/gbp-devhelp-search.c
+++ b/src/plugins/devhelp/gbp-devhelp-search.c
@@ -30,7 +30,7 @@
 #include "gbp-devhelp-search.h"
 #include "gbp-devhelp-search-private.h"
 
-G_DEFINE_TYPE (GbpDevhelpSearch, gbp_devhelp_search, GTK_TYPE_BIN)
+G_DEFINE_FINAL_TYPE (GbpDevhelpSearch, gbp_devhelp_search, GTK_TYPE_BIN)
 
 static void
 search_text_changed_cb (IdeTaggedEntry   *search_entry,
diff --git a/src/plugins/devhelp/gbp-devhelp-session-addin.c b/src/plugins/devhelp/gbp-devhelp-session-addin.c
index c03bff2e6..25d4b6593 100644
--- a/src/plugins/devhelp/gbp-devhelp-session-addin.c
+++ b/src/plugins/devhelp/gbp-devhelp-session-addin.c
@@ -150,7 +150,7 @@ session_addin_iface_init (IdeSessionAddinInterface *iface)
   iface->get_autosave_properties = gbp_devhelp_session_addin_get_autosave_properties;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpDevhelpSessionAddin, gbp_devhelp_session_addin, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpDevhelpSessionAddin, gbp_devhelp_session_addin, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_SESSION_ADDIN, session_addin_iface_init))
 
 static void
diff --git a/src/plugins/deviced/gbp-deviced-deploy-strategy.c 
b/src/plugins/deviced/gbp-deviced-deploy-strategy.c
index 86016ee40..82bec4593 100644
--- a/src/plugins/deviced/gbp-deviced-deploy-strategy.c
+++ b/src/plugins/deviced/gbp-deviced-deploy-strategy.c
@@ -42,7 +42,7 @@ typedef struct
   GDestroyNotify         progress_data_destroy;
 } DeployState;
 
-G_DEFINE_TYPE (GbpDevicedDeployStrategy, gbp_deviced_deploy_strategy, IDE_TYPE_DEPLOY_STRATEGY)
+G_DEFINE_FINAL_TYPE (GbpDevicedDeployStrategy, gbp_deviced_deploy_strategy, IDE_TYPE_DEPLOY_STRATEGY)
 
 static void
 deploy_state_free (DeployState *state)
diff --git a/src/plugins/deviced/gbp-deviced-device-provider.c 
b/src/plugins/deviced/gbp-deviced-device-provider.c
index 3d6fdb8a6..7b2157f7c 100644
--- a/src/plugins/deviced/gbp-deviced-device-provider.c
+++ b/src/plugins/deviced/gbp-deviced-device-provider.c
@@ -37,7 +37,7 @@ struct _GbpDevicedDeviceProvider
   DevdBrowser *browser;
 };
 
-G_DEFINE_TYPE (GbpDevicedDeviceProvider, gbp_deviced_device_provider, IDE_TYPE_DEVICE_PROVIDER)
+G_DEFINE_FINAL_TYPE (GbpDevicedDeviceProvider, gbp_deviced_device_provider, IDE_TYPE_DEVICE_PROVIDER)
 
 static void
 gbp_deviced_device_provider_device_added_cb (GbpDevicedDeviceProvider *self,
diff --git a/src/plugins/deviced/gbp-deviced-device.c b/src/plugins/deviced/gbp-deviced-device.c
index 0ced14221..5a462a31c 100644
--- a/src/plugins/deviced/gbp-deviced-device.c
+++ b/src/plugins/deviced/gbp-deviced-device.c
@@ -40,7 +40,7 @@ typedef struct
   GDestroyNotify         progress_data_destroy;
 } InstallBundleState;
 
-G_DEFINE_TYPE (GbpDevicedDevice, gbp_deviced_device, IDE_TYPE_DEVICE)
+G_DEFINE_FINAL_TYPE (GbpDevicedDevice, gbp_deviced_device, IDE_TYPE_DEVICE)
 
 enum {
   PROP_0,
diff --git a/src/plugins/deviceui/gbp-deviceui-workspace-addin.c 
b/src/plugins/deviceui/gbp-deviceui-workspace-addin.c
index f7cd7fb2c..889066d51 100644
--- a/src/plugins/deviceui/gbp-deviceui-workspace-addin.c
+++ b/src/plugins/deviceui/gbp-deviceui-workspace-addin.c
@@ -114,7 +114,7 @@ workspace_addin_iface_init (IdeWorkspaceAddinInterface *iface)
   iface->unload = gbp_deviceui_workspace_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpDeviceuiWorkspaceAddin, gbp_deviceui_workspace_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpDeviceuiWorkspaceAddin, gbp_deviceui_workspace_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_WORKSPACE_ADDIN, workspace_addin_iface_init))
 
 static void
diff --git a/src/plugins/doap/gbp-doap-workbench-addin.c b/src/plugins/doap/gbp-doap-workbench-addin.c
index 9057318d1..38ce498d6 100644
--- a/src/plugins/doap/gbp-doap-workbench-addin.c
+++ b/src/plugins/doap/gbp-doap-workbench-addin.c
@@ -161,7 +161,7 @@ workbench_addin_iface_init (IdeWorkbenchAddinInterface *iface)
   iface->unload = gbp_doap_workbench_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpDoapWorkbenchAddin, gbp_doap_workbench_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpDoapWorkbenchAddin, gbp_doap_workbench_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_WORKBENCH_ADDIN,
                                                 workbench_addin_iface_init))
 
diff --git a/src/plugins/dspy/gbp-dspy-application-addin.c b/src/plugins/dspy/gbp-dspy-application-addin.c
index a7c3d633d..a9c46057c 100644
--- a/src/plugins/dspy/gbp-dspy-application-addin.c
+++ b/src/plugins/dspy/gbp-dspy-application-addin.c
@@ -149,7 +149,7 @@ app_addin_iface_init (IdeApplicationAddinInterface *iface)
   iface->handle_command_line = gbp_dspy_application_addin_handle_command_line;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpDspyApplicationAddin, gbp_dspy_application_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpDspyApplicationAddin, gbp_dspy_application_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_APPLICATION_ADDIN, app_addin_iface_init))
 
 static void
diff --git a/src/plugins/dspy/gbp-dspy-surface.c b/src/plugins/dspy/gbp-dspy-surface.c
index 483eb9a25..9939e840c 100644
--- a/src/plugins/dspy/gbp-dspy-surface.c
+++ b/src/plugins/dspy/gbp-dspy-surface.c
@@ -34,7 +34,7 @@ struct _GbpDspySurface
   DspyView   *view;
 };
 
-G_DEFINE_TYPE (GbpDspySurface, gbp_dspy_surface, IDE_TYPE_SURFACE)
+G_DEFINE_FINAL_TYPE (GbpDspySurface, gbp_dspy_surface, IDE_TYPE_SURFACE)
 
 static void
 gbp_dspy_surface_class_init (GbpDspySurfaceClass *klass)
diff --git a/src/plugins/dspy/gbp-dspy-workspace.c b/src/plugins/dspy/gbp-dspy-workspace.c
index 5be67a886..233c3d5d5 100644
--- a/src/plugins/dspy/gbp-dspy-workspace.c
+++ b/src/plugins/dspy/gbp-dspy-workspace.c
@@ -32,7 +32,7 @@ struct _GbpDspyWorkspace
   GbpDspySurface *surface;
 };
 
-G_DEFINE_TYPE (GbpDspyWorkspace, gbp_dspy_workspace, IDE_TYPE_WORKSPACE)
+G_DEFINE_FINAL_TYPE (GbpDspyWorkspace, gbp_dspy_workspace, IDE_TYPE_WORKSPACE)
 
 static void
 gbp_dspy_workspace_class_init (GbpDspyWorkspaceClass *klass)
diff --git a/src/plugins/dspy/libdspy/dspy-connection.c b/src/plugins/dspy/libdspy/dspy-connection.c
index 4684e4f6d..b882fdf4d 100644
--- a/src/plugins/dspy/libdspy/dspy-connection.c
+++ b/src/plugins/dspy/libdspy/dspy-connection.c
@@ -36,7 +36,7 @@ struct _DspyConnection
   GBusType         bus_type;
 };
 
-G_DEFINE_TYPE (DspyConnection, dspy_connection, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (DspyConnection, dspy_connection, G_TYPE_OBJECT)
 
 enum {
   PROP_0,
diff --git a/src/plugins/dspy/libdspy/dspy-introspection-model.c 
b/src/plugins/dspy/libdspy/dspy-introspection-model.c
index b2e749cb1..177038559 100644
--- a/src/plugins/dspy/libdspy/dspy-introspection-model.c
+++ b/src/plugins/dspy/libdspy/dspy-introspection-model.c
@@ -790,7 +790,7 @@ tree_model_iface_init (GtkTreeModelIface *iface)
   iface->iter_parent = dspy_introspection_model_iter_parent;
 }
 
-G_DEFINE_TYPE_WITH_CODE (DspyIntrospectionModel, dspy_introspection_model, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (DspyIntrospectionModel, dspy_introspection_model, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (G_TYPE_ASYNC_INITABLE, async_initable_iface_init)
                          G_IMPLEMENT_INTERFACE (GTK_TYPE_TREE_MODEL, tree_model_iface_init))
 
diff --git a/src/plugins/dspy/libdspy/dspy-name-marquee.c b/src/plugins/dspy/libdspy/dspy-name-marquee.c
index 324877268..6cd6cdaf0 100644
--- a/src/plugins/dspy/libdspy/dspy-name-marquee.c
+++ b/src/plugins/dspy/libdspy/dspy-name-marquee.c
@@ -39,7 +39,7 @@ struct _DspyNameMarquee
   GtkLabel        *label_pid;
 };
 
-G_DEFINE_TYPE (DspyNameMarquee, dspy_name_marquee, GTK_TYPE_BIN)
+G_DEFINE_FINAL_TYPE (DspyNameMarquee, dspy_name_marquee, GTK_TYPE_BIN)
 
 enum {
   PROP_0,
diff --git a/src/plugins/dspy/libdspy/dspy-name-row.c b/src/plugins/dspy/libdspy/dspy-name-row.c
index d4e87b3de..d412e95dc 100644
--- a/src/plugins/dspy/libdspy/dspy-name-row.c
+++ b/src/plugins/dspy/libdspy/dspy-name-row.c
@@ -36,7 +36,7 @@ struct _DspyNameRow
   GtkLabel      *subtitle;
 };
 
-G_DEFINE_TYPE (DspyNameRow, dspy_name_row, GTK_TYPE_LIST_BOX_ROW)
+G_DEFINE_FINAL_TYPE (DspyNameRow, dspy_name_row, GTK_TYPE_LIST_BOX_ROW)
 
 enum {
   PROP_0,
diff --git a/src/plugins/dspy/libdspy/dspy-name.c b/src/plugins/dspy/libdspy/dspy-name.c
index 4d3d61739..997ec3680 100644
--- a/src/plugins/dspy/libdspy/dspy-name.c
+++ b/src/plugins/dspy/libdspy/dspy-name.c
@@ -47,7 +47,7 @@ enum {
   N_PROPS
 };
 
-G_DEFINE_TYPE (DspyName, dspy_name, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (DspyName, dspy_name, G_TYPE_OBJECT)
 
 static GParamSpec *properties [N_PROPS];
 
diff --git a/src/plugins/dspy/libdspy/dspy-names-model.c b/src/plugins/dspy/libdspy/dspy-names-model.c
index 4696b9c5f..72398ea4f 100644
--- a/src/plugins/dspy/libdspy/dspy-names-model.c
+++ b/src/plugins/dspy/libdspy/dspy-names-model.c
@@ -417,7 +417,7 @@ async_initable_iface_init (GAsyncInitableIface *iface)
   iface->init_finish = dspy_names_model_init_finish;
 }
 
-G_DEFINE_TYPE_WITH_CODE (DspyNamesModel, dspy_names_model, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (DspyNamesModel, dspy_names_model, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, list_model_iface_init)
                          G_IMPLEMENT_INTERFACE (G_TYPE_ASYNC_INITABLE, async_initable_iface_init))
 
diff --git a/src/plugins/editor/gbp-confirm-save-dialog.c b/src/plugins/editor/gbp-confirm-save-dialog.c
index 62da08527..7b368dab9 100644
--- a/src/plugins/editor/gbp-confirm-save-dialog.c
+++ b/src/plugins/editor/gbp-confirm-save-dialog.c
@@ -38,7 +38,7 @@ struct _GbpConfirmSaveDialog
   GtkCellRendererToggle *toggle;
 };
 
-G_DEFINE_TYPE (GbpConfirmSaveDialog, gbp_confirm_save_dialog, GTK_TYPE_MESSAGE_DIALOG)
+G_DEFINE_FINAL_TYPE (GbpConfirmSaveDialog, gbp_confirm_save_dialog, GTK_TYPE_MESSAGE_DIALOG)
 
 enum {
   COLUMN_SELECTED,
diff --git a/src/plugins/editor/gbp-editor-application-addin.c 
b/src/plugins/editor/gbp-editor-application-addin.c
index ef1491a0c..e5988dc36 100644
--- a/src/plugins/editor/gbp-editor-application-addin.c
+++ b/src/plugins/editor/gbp-editor-application-addin.c
@@ -396,7 +396,7 @@ cmdline_addin_iface_init (IdeApplicationAddinInterface *iface)
   iface->unload = gbp_editor_application_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpEditorApplicationAddin, gbp_editor_application_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpEditorApplicationAddin, gbp_editor_application_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_APPLICATION_ADDIN, cmdline_addin_iface_init))
 
 static void
diff --git a/src/plugins/editor/gbp-editor-frame-addin.c b/src/plugins/editor/gbp-editor-frame-addin.c
index 1feb5330a..f0e2c3622 100644
--- a/src/plugins/editor/gbp-editor-frame-addin.c
+++ b/src/plugins/editor/gbp-editor-frame-addin.c
@@ -164,7 +164,7 @@ frame_addin_iface_init (IdeFrameAddinInterface *iface)
   iface->set_page = gbp_editor_frame_addin_set_page;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpEditorFrameAddin,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpEditorFrameAddin,
                          gbp_editor_frame_addin,
                          G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_FRAME_ADDIN, frame_addin_iface_init))
diff --git a/src/plugins/editor/gbp-editor-frame-controls.c b/src/plugins/editor/gbp-editor-frame-controls.c
index 1cfc17c3c..9c48f505d 100644
--- a/src/plugins/editor/gbp-editor-frame-controls.c
+++ b/src/plugins/editor/gbp-editor-frame-controls.c
@@ -32,7 +32,7 @@
 #include "gbp-editor-frame-controls.h"
 
 
-G_DEFINE_TYPE (GbpEditorFrameControls, gbp_editor_frame_controls, GTK_TYPE_BOX)
+G_DEFINE_FINAL_TYPE (GbpEditorFrameControls, gbp_editor_frame_controls, GTK_TYPE_BOX)
 
 static void
 document_cursor_moved (GbpEditorFrameControls *self,
diff --git a/src/plugins/editor/gbp-editor-hover-provider.c b/src/plugins/editor/gbp-editor-hover-provider.c
index 4441ee604..e979dae8b 100644
--- a/src/plugins/editor/gbp-editor-hover-provider.c
+++ b/src/plugins/editor/gbp-editor-hover-provider.c
@@ -114,7 +114,7 @@ hover_provider_iface_init (IdeHoverProviderInterface *iface)
   iface->hover_finish = gbp_editor_hover_provider_hover_finish;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpEditorHoverProvider, gbp_editor_hover_provider, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpEditorHoverProvider, gbp_editor_hover_provider, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_HOVER_PROVIDER, hover_provider_iface_init))
 
 static void
diff --git a/src/plugins/editor/gbp-editor-session-addin.c b/src/plugins/editor/gbp-editor-session-addin.c
index b37a0a0ad..dbedb4fff 100644
--- a/src/plugins/editor/gbp-editor-session-addin.c
+++ b/src/plugins/editor/gbp-editor-session-addin.c
@@ -273,7 +273,7 @@ session_addin_iface_init (IdeSessionAddinInterface *iface)
   iface->get_autosave_properties = gbp_editor_session_addin_get_autosave_properties;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpEditorSessionAddin, gbp_editor_session_addin, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpEditorSessionAddin, gbp_editor_session_addin, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_SESSION_ADDIN, session_addin_iface_init))
 
 static void
diff --git a/src/plugins/editor/gbp-editor-workbench-addin.c b/src/plugins/editor/gbp-editor-workbench-addin.c
index 6e2027b94..ddebe3569 100644
--- a/src/plugins/editor/gbp-editor-workbench-addin.c
+++ b/src/plugins/editor/gbp-editor-workbench-addin.c
@@ -50,7 +50,7 @@ typedef struct
 
 static void ide_workbench_addin_iface_init (IdeWorkbenchAddinInterface *iface);
 
-G_DEFINE_TYPE_EXTENDED (GbpEditorWorkbenchAddin, gbp_editor_workbench_addin, G_TYPE_OBJECT, 0,
+G_DEFINE_TYPE_EXTENDED (GbpEditorWorkbenchAddin, gbp_editor_workbench_addin, G_TYPE_OBJECT, 
G_TYPE_FLAG_FINAL,
                         G_IMPLEMENT_INTERFACE (IDE_TYPE_WORKBENCH_ADDIN,
                                                ide_workbench_addin_iface_init))
 
diff --git a/src/plugins/editor/gbp-editor-workspace-addin.c b/src/plugins/editor/gbp-editor-workspace-addin.c
index 1729182ba..6ff2ebb18 100644
--- a/src/plugins/editor/gbp-editor-workspace-addin.c
+++ b/src/plugins/editor/gbp-editor-workspace-addin.c
@@ -406,7 +406,7 @@ workspace_addin_iface_init (IdeWorkspaceAddinInterface *iface)
   iface->can_close = gbp_editor_workspace_addin_can_close;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpEditorWorkspaceAddin, gbp_editor_workspace_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpEditorWorkspaceAddin, gbp_editor_workspace_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_WORKSPACE_ADDIN,
                                                 workspace_addin_iface_init))
 
diff --git a/src/plugins/editorconfig/gbp-editorconfig-file-settings.c 
b/src/plugins/editorconfig/gbp-editorconfig-file-settings.c
index 27e6cc5fb..527837db3 100644
--- a/src/plugins/editorconfig/gbp-editorconfig-file-settings.c
+++ b/src/plugins/editorconfig/gbp-editorconfig-file-settings.c
@@ -38,7 +38,7 @@ static void async_initable_iface_init (GAsyncInitableIface *iface);
 G_DEFINE_TYPE_EXTENDED (GbpEditorconfigFileSettings,
                         gbp_editorconfig_file_settings,
                         IDE_TYPE_FILE_SETTINGS,
-                        0,
+                        G_TYPE_FLAG_FINAL,
                         G_IMPLEMENT_INTERFACE (G_TYPE_ASYNC_INITABLE,
                                                async_initable_iface_init))
 
diff --git a/src/plugins/emacs/gbp-emacs-preferences-addin.c b/src/plugins/emacs/gbp-emacs-preferences-addin.c
index ac2222525..a12362848 100644
--- a/src/plugins/emacs/gbp-emacs-preferences-addin.c
+++ b/src/plugins/emacs/gbp-emacs-preferences-addin.c
@@ -74,7 +74,7 @@ preferences_addin_iface_init (IdePreferencesAddinInterface *iface)
   iface->unload = gbp_emacs_preferences_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpEmacsPreferencesAddin, gbp_emacs_preferences_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpEmacsPreferencesAddin, gbp_emacs_preferences_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_PREFERENCES_ADDIN,
                                                 preferences_addin_iface_init))
 
diff --git a/src/plugins/file-search/gbp-file-search-index.c b/src/plugins/file-search/gbp-file-search-index.c
index f7e4b9c20..6b262b8d6 100644
--- a/src/plugins/file-search/gbp-file-search-index.c
+++ b/src/plugins/file-search/gbp-file-search-index.c
@@ -39,7 +39,7 @@ struct _GbpFileSearchIndex
   gint                  max_depth;
 };
 
-G_DEFINE_TYPE (GbpFileSearchIndex, gbp_file_search_index, IDE_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (GbpFileSearchIndex, gbp_file_search_index, IDE_TYPE_OBJECT)
 
 enum {
   PROP_0,
diff --git a/src/plugins/file-search/gbp-file-search-provider.c 
b/src/plugins/file-search/gbp-file-search-provider.c
index ced529615..b26248622 100644
--- a/src/plugins/file-search/gbp-file-search-provider.c
+++ b/src/plugins/file-search/gbp-file-search-provider.c
@@ -40,7 +40,7 @@ struct _GbpFileSearchProvider
 
 static void search_provider_iface_init (IdeSearchProviderInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (GbpFileSearchProvider,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpFileSearchProvider,
                          gbp_file_search_provider,
                          IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_SEARCH_PROVIDER, search_provider_iface_init))
diff --git a/src/plugins/file-search/gbp-file-search-result.c 
b/src/plugins/file-search/gbp-file-search-result.c
index e57eba9f7..b847be44a 100644
--- a/src/plugins/file-search/gbp-file-search-result.c
+++ b/src/plugins/file-search/gbp-file-search-result.c
@@ -32,7 +32,7 @@ struct _GbpFileSearchResult
   gchar           *path;
 };
 
-G_DEFINE_TYPE (GbpFileSearchResult, gbp_file_search_result, IDE_TYPE_SEARCH_RESULT)
+G_DEFINE_FINAL_TYPE (GbpFileSearchResult, gbp_file_search_result, IDE_TYPE_SEARCH_RESULT)
 
 enum {
   PROP_0,
diff --git a/src/plugins/flatpak/daemon/ipc-flatpak-service-impl.c 
b/src/plugins/flatpak/daemon/ipc-flatpak-service-impl.c
index 8319ded19..3117c4615 100644
--- a/src/plugins/flatpak/daemon/ipc-flatpak-service-impl.c
+++ b/src/plugins/flatpak/daemon/ipc-flatpak-service-impl.c
@@ -1314,7 +1314,7 @@ service_iface_init (IpcFlatpakServiceIface *iface)
   iface->handle_resolve_extension = ipc_flatpak_service_impl_resolve_extension;
 }
 
-G_DEFINE_TYPE_WITH_CODE (IpcFlatpakServiceImpl, ipc_flatpak_service_impl, IPC_TYPE_FLATPAK_SERVICE_SKELETON,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IpcFlatpakServiceImpl, ipc_flatpak_service_impl, 
IPC_TYPE_FLATPAK_SERVICE_SKELETON,
                          G_IMPLEMENT_INTERFACE (IPC_TYPE_FLATPAK_SERVICE, service_iface_init))
 
 static void
diff --git a/src/plugins/flatpak/gbp-flatpak-application-addin.c 
b/src/plugins/flatpak/gbp-flatpak-application-addin.c
index ae3b4948e..7553238dd 100644
--- a/src/plugins/flatpak/gbp-flatpak-application-addin.c
+++ b/src/plugins/flatpak/gbp-flatpak-application-addin.c
@@ -112,7 +112,7 @@ application_addin_iface_init (IdeApplicationAddinInterface *iface)
 G_DEFINE_TYPE_EXTENDED (GbpFlatpakApplicationAddin,
                         gbp_flatpak_application_addin,
                         G_TYPE_OBJECT,
-                        0,
+                        G_TYPE_FLAG_FINAL,
                         G_IMPLEMENT_INTERFACE (IDE_TYPE_APPLICATION_ADDIN, application_addin_iface_init))
 
 static void
diff --git a/src/plugins/flatpak/gbp-flatpak-build-system-discovery.c 
b/src/plugins/flatpak/gbp-flatpak-build-system-discovery.c
index 9179e2a9d..a94328c25 100644
--- a/src/plugins/flatpak/gbp-flatpak-build-system-discovery.c
+++ b/src/plugins/flatpak/gbp-flatpak-build-system-discovery.c
@@ -226,7 +226,7 @@ build_system_discovery_iface_init (IdeBuildSystemDiscoveryInterface *iface)
   iface->discover = gbp_flatpak_build_system_discovery_discover;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpFlatpakBuildSystemDiscovery,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpFlatpakBuildSystemDiscovery,
                          gbp_flatpak_build_system_discovery,
                          G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_BUILD_SYSTEM_DISCOVERY, 
build_system_discovery_iface_init))
diff --git a/src/plugins/flatpak/gbp-flatpak-build-target-provider.c 
b/src/plugins/flatpak/gbp-flatpak-build-target-provider.c
index 9638f8ae9..4fa85eb7b 100644
--- a/src/plugins/flatpak/gbp-flatpak-build-target-provider.c
+++ b/src/plugins/flatpak/gbp-flatpak-build-target-provider.c
@@ -97,7 +97,7 @@ build_target_provider_iface_init (IdeBuildTargetProviderInterface *iface)
   iface->get_targets_finish = gbp_flatpak_build_target_provider_get_targets_finish;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpFlatpakBuildTargetProvider,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpFlatpakBuildTargetProvider,
                          gbp_flatpak_build_target_provider,
                          IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_BUILD_TARGET_PROVIDER,
diff --git a/src/plugins/flatpak/gbp-flatpak-build-target.c b/src/plugins/flatpak/gbp-flatpak-build-target.c
index 7b65afe74..22858609a 100644
--- a/src/plugins/flatpak/gbp-flatpak-build-target.c
+++ b/src/plugins/flatpak/gbp-flatpak-build-target.c
@@ -89,7 +89,7 @@ build_target_iface_init (IdeBuildTargetInterface *iface)
   iface->get_priority = gbp_flatpak_build_target_get_priority;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpFlatpakBuildTarget, gbp_flatpak_build_target, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpFlatpakBuildTarget, gbp_flatpak_build_target, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_BUILD_TARGET, build_target_iface_init))
 
 static GParamSpec *properties [N_PROPS];
diff --git a/src/plugins/flatpak/gbp-flatpak-client.c b/src/plugins/flatpak/gbp-flatpak-client.c
index 0214cc732..ec6443651 100644
--- a/src/plugins/flatpak/gbp-flatpak-client.c
+++ b/src/plugins/flatpak/gbp-flatpak-client.c
@@ -47,7 +47,7 @@ enum {
   STATE_SHUTDOWN,
 };
 
-G_DEFINE_TYPE (GbpFlatpakClient, gbp_flatpak_client, IDE_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (GbpFlatpakClient, gbp_flatpak_client, IDE_TYPE_OBJECT)
 
 static void
 gbp_flatpak_client_subprocess_spawned (GbpFlatpakClient        *self,
diff --git a/src/plugins/flatpak/gbp-flatpak-clone-widget.c b/src/plugins/flatpak/gbp-flatpak-clone-widget.c
index 1345312a1..2fb60f336 100644
--- a/src/plugins/flatpak/gbp-flatpak-clone-widget.c
+++ b/src/plugins/flatpak/gbp-flatpak-clone-widget.c
@@ -82,7 +82,7 @@ enum {
   LAST_PROP
 };
 
-G_DEFINE_TYPE (GbpFlatpakCloneWidget, gbp_flatpak_clone_widget, IDE_TYPE_SURFACE)
+G_DEFINE_FINAL_TYPE (GbpFlatpakCloneWidget, gbp_flatpak_clone_widget, IDE_TYPE_SURFACE)
 
 static void
 module_source_free (void *data)
diff --git a/src/plugins/flatpak/gbp-flatpak-config-provider.c 
b/src/plugins/flatpak/gbp-flatpak-config-provider.c
index 8b87930f2..62bd3e22e 100644
--- a/src/plugins/flatpak/gbp-flatpak-config-provider.c
+++ b/src/plugins/flatpak/gbp-flatpak-config-provider.c
@@ -693,7 +693,7 @@ configuration_provider_iface_init (IdeConfigProviderInterface *iface)
   iface->delete = gbp_flatpak_config_provider_delete;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpFlatpakConfigProvider,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpFlatpakConfigProvider,
                          gbp_flatpak_config_provider,
                          IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_CONFIG_PROVIDER,
diff --git a/src/plugins/flatpak/gbp-flatpak-dependency-updater.c 
b/src/plugins/flatpak/gbp-flatpak-dependency-updater.c
index 40c05859a..96805fe9e 100644
--- a/src/plugins/flatpak/gbp-flatpak-dependency-updater.c
+++ b/src/plugins/flatpak/gbp-flatpak-dependency-updater.c
@@ -143,7 +143,7 @@ dependency_udpater_iface_init (IdeDependencyUpdaterInterface *iface)
   iface->update_finish = gbp_flatpak_dependency_updater_update_finish;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpFlatpakDependencyUpdater,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpFlatpakDependencyUpdater,
                          gbp_flatpak_dependency_updater,
                          IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_DEPENDENCY_UPDATER,
diff --git a/src/plugins/flatpak/gbp-flatpak-download-stage.c 
b/src/plugins/flatpak/gbp-flatpak-download-stage.c
index 746b2a417..4ee3d58d0 100644
--- a/src/plugins/flatpak/gbp-flatpak-download-stage.c
+++ b/src/plugins/flatpak/gbp-flatpak-download-stage.c
@@ -37,7 +37,7 @@ struct _GbpFlatpakDownloadStage
   guint force_update : 1;
 };
 
-G_DEFINE_TYPE (GbpFlatpakDownloadStage, gbp_flatpak_download_stage, IDE_TYPE_PIPELINE_STAGE_LAUNCHER)
+G_DEFINE_FINAL_TYPE (GbpFlatpakDownloadStage, gbp_flatpak_download_stage, IDE_TYPE_PIPELINE_STAGE_LAUNCHER)
 
 enum {
   PROP_0,
diff --git a/src/plugins/flatpak/gbp-flatpak-install-dialog.c 
b/src/plugins/flatpak/gbp-flatpak-install-dialog.c
index 326aacdc9..15cc99896 100644
--- a/src/plugins/flatpak/gbp-flatpak-install-dialog.c
+++ b/src/plugins/flatpak/gbp-flatpak-install-dialog.c
@@ -38,7 +38,7 @@ struct _GbpFlatpakInstallDialog
   gint          response_id;
 };
 
-G_DEFINE_TYPE (GbpFlatpakInstallDialog, gbp_flatpak_install_dialog, GTK_TYPE_DIALOG)
+G_DEFINE_FINAL_TYPE (GbpFlatpakInstallDialog, gbp_flatpak_install_dialog, GTK_TYPE_DIALOG)
 
 GbpFlatpakInstallDialog *
 gbp_flatpak_install_dialog_new (GtkWindow *transient_for)
diff --git a/src/plugins/flatpak/gbp-flatpak-manifest.c b/src/plugins/flatpak/gbp-flatpak-manifest.c
index a7e5ebc77..bd166026f 100644
--- a/src/plugins/flatpak/gbp-flatpak-manifest.c
+++ b/src/plugins/flatpak/gbp-flatpak-manifest.c
@@ -62,7 +62,7 @@ struct _GbpFlatpakManifest
 
 static void initable_iface_init (GInitableIface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (GbpFlatpakManifest, gbp_flatpak_manifest, IDE_TYPE_CONFIG,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpFlatpakManifest, gbp_flatpak_manifest, IDE_TYPE_CONFIG,
                          G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, initable_iface_init))
 
 enum {
diff --git a/src/plugins/flatpak/gbp-flatpak-pipeline-addin.c 
b/src/plugins/flatpak/gbp-flatpak-pipeline-addin.c
index adc2bbf60..cf75dca60 100644
--- a/src/plugins/flatpak/gbp-flatpak-pipeline-addin.c
+++ b/src/plugins/flatpak/gbp-flatpak-pipeline-addin.c
@@ -769,7 +769,7 @@ pipeline_addin_iface_init (IdePipelineAddinInterface *iface)
   iface->unload = gbp_flatpak_pipeline_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpFlatpakPipelineAddin, gbp_flatpak_pipeline_addin, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpFlatpakPipelineAddin, gbp_flatpak_pipeline_addin, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_PIPELINE_ADDIN,
                                                 pipeline_addin_iface_init))
 
diff --git a/src/plugins/flatpak/gbp-flatpak-runner.c b/src/plugins/flatpak/gbp-flatpak-runner.c
index 103ebff2d..58a38d406 100644
--- a/src/plugins/flatpak/gbp-flatpak-runner.c
+++ b/src/plugins/flatpak/gbp-flatpak-runner.c
@@ -37,7 +37,7 @@ struct _GbpFlatpakRunner
   gchar *manifest_command;
 };
 
-G_DEFINE_TYPE (GbpFlatpakRunner, gbp_flatpak_runner, IDE_TYPE_RUNNER)
+G_DEFINE_FINAL_TYPE (GbpFlatpakRunner, gbp_flatpak_runner, IDE_TYPE_RUNNER)
 
 static IdeSubprocessLauncher *
 gbp_flatpak_runner_create_launcher (IdeRunner *runner)
diff --git a/src/plugins/flatpak/gbp-flatpak-runtime-provider.c 
b/src/plugins/flatpak/gbp-flatpak-runtime-provider.c
index c92d3ea5f..ca30a3369 100644
--- a/src/plugins/flatpak/gbp-flatpak-runtime-provider.c
+++ b/src/plugins/flatpak/gbp-flatpak-runtime-provider.c
@@ -46,7 +46,7 @@ struct _GbpFlatpakRuntimeProvider
 
 static void runtime_provider_iface_init (IdeRuntimeProviderInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (GbpFlatpakRuntimeProvider, gbp_flatpak_runtime_provider, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpFlatpakRuntimeProvider, gbp_flatpak_runtime_provider, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_RUNTIME_PROVIDER, runtime_provider_iface_init))
 
 static void
diff --git a/src/plugins/flatpak/gbp-flatpak-runtime.c b/src/plugins/flatpak/gbp-flatpak-runtime.c
index d7a0839cc..8abba86a7 100644
--- a/src/plugins/flatpak/gbp-flatpak-runtime.c
+++ b/src/plugins/flatpak/gbp-flatpak-runtime.c
@@ -45,7 +45,7 @@ struct _GbpFlatpakRuntime
   GFile *deploy_dir_files;
 };
 
-G_DEFINE_TYPE (GbpFlatpakRuntime, gbp_flatpak_runtime, IDE_TYPE_RUNTIME)
+G_DEFINE_FINAL_TYPE (GbpFlatpakRuntime, gbp_flatpak_runtime, IDE_TYPE_RUNTIME)
 
 enum {
   PROP_0,
diff --git a/src/plugins/flatpak/gbp-flatpak-subprocess-launcher.c 
b/src/plugins/flatpak/gbp-flatpak-subprocess-launcher.c
index b6dcd9db2..74004a088 100644
--- a/src/plugins/flatpak/gbp-flatpak-subprocess-launcher.c
+++ b/src/plugins/flatpak/gbp-flatpak-subprocess-launcher.c
@@ -29,7 +29,7 @@ struct _GbpFlatpakSubprocessLauncher
   guint use_run : 1;
 };
 
-G_DEFINE_TYPE (GbpFlatpakSubprocessLauncher, gbp_flatpak_subprocess_launcher, IDE_TYPE_SUBPROCESS_LAUNCHER)
+G_DEFINE_FINAL_TYPE (GbpFlatpakSubprocessLauncher, gbp_flatpak_subprocess_launcher, 
IDE_TYPE_SUBPROCESS_LAUNCHER)
 
 static const char * const *
 insert_argv (IdeSubprocessLauncher *launcher,
diff --git a/src/plugins/flatpak/ipc-flatpak-transfer-impl.c b/src/plugins/flatpak/ipc-flatpak-transfer-impl.c
index 58685d788..7cc0d2892 100644
--- a/src/plugins/flatpak/ipc-flatpak-transfer-impl.c
+++ b/src/plugins/flatpak/ipc-flatpak-transfer-impl.c
@@ -36,7 +36,7 @@ struct _IpcFlatpakTransferImpl
 
 static void transfer_iface_init (IpcFlatpakTransferIface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IpcFlatpakTransferImpl, ipc_flatpak_transfer_impl, 
IPC_TYPE_FLATPAK_TRANSFER_SKELETON,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IpcFlatpakTransferImpl, ipc_flatpak_transfer_impl, 
IPC_TYPE_FLATPAK_TRANSFER_SKELETON,
                          G_IMPLEMENT_INTERFACE (IPC_TYPE_FLATPAK_TRANSFER, transfer_iface_init))
 
 typedef struct
diff --git a/src/plugins/gcc/gbp-gcc-pipeline-addin.c b/src/plugins/gcc/gbp-gcc-pipeline-addin.c
index 5e4b8fb9d..5dc68e661 100644
--- a/src/plugins/gcc/gbp-gcc-pipeline-addin.c
+++ b/src/plugins/gcc/gbp-gcc-pipeline-addin.c
@@ -73,7 +73,7 @@ addin_iface_init (IdePipelineAddinInterface *iface)
   iface->unload = gbp_gcc_pipeline_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpGccPipelineAddin, gbp_gcc_pipeline_addin, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpGccPipelineAddin, gbp_gcc_pipeline_addin, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_PIPELINE_ADDIN, addin_iface_init))
 
 static void gbp_gcc_pipeline_addin_class_init (GbpGccPipelineAddinClass *klass) { }
diff --git a/src/plugins/gcc/gbp-gcc-toolchain-provider.c b/src/plugins/gcc/gbp-gcc-toolchain-provider.c
index 93c2df8f2..13a77349b 100644
--- a/src/plugins/gcc/gbp-gcc-toolchain-provider.c
+++ b/src/plugins/gcc/gbp-gcc-toolchain-provider.c
@@ -343,7 +343,7 @@ toolchain_provider_iface_init (IdeToolchainProviderInterface *iface)
   iface->unload = gbp_gcc_toolchain_provider_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpGccToolchainProvider,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpGccToolchainProvider,
                          gbp_gcc_toolchain_provider,
                          IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_TOOLCHAIN_PROVIDER,
diff --git a/src/plugins/gdb/gbp-gdb-debugger.c b/src/plugins/gdb/gbp-gdb-debugger.c
index 8dd90833e..52c6629b7 100644
--- a/src/plugins/gdb/gbp-gdb-debugger.c
+++ b/src/plugins/gdb/gbp-gdb-debugger.c
@@ -65,7 +65,7 @@ typedef struct
   gboolean completed;
 } SyncHandle;
 
-G_DEFINE_TYPE (GbpGdbDebugger, gbp_gdb_debugger, IDE_TYPE_DEBUGGER)
+G_DEFINE_FINAL_TYPE (GbpGdbDebugger, gbp_gdb_debugger, IDE_TYPE_DEBUGGER)
 
 #define DEBUG_LOG(dir,msg)                                 \
   G_STMT_START {                                           \
diff --git a/src/plugins/gdiagnose/gbp-gdiagnose-diagnostic-provider.c 
b/src/plugins/gdiagnose/gbp-gdiagnose-diagnostic-provider.c
index 0b1060981..2163f4f81 100644
--- a/src/plugins/gdiagnose/gbp-gdiagnose-diagnostic-provider.c
+++ b/src/plugins/gdiagnose/gbp-gdiagnose-diagnostic-provider.c
@@ -80,7 +80,7 @@ provider_iface_init (IdeDiagnosticProviderInterface *iface)
   iface->diagnose_finish = gbp_gdiagnose_diagnostic_provider_diagnose_finish;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpGdiagnoseDiagnosticProvider, gbp_gdiagnose_diagnostic_provider, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpGdiagnoseDiagnosticProvider, gbp_gdiagnose_diagnostic_provider, 
IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_DIAGNOSTIC_PROVIDER, provider_iface_init))
 
 static void
diff --git a/src/plugins/gettext/ide-gettext-diagnostic-provider.c 
b/src/plugins/gettext/ide-gettext-diagnostic-provider.c
index 373162b69..66a3ddde6 100644
--- a/src/plugins/gettext/ide-gettext-diagnostic-provider.c
+++ b/src/plugins/gettext/ide-gettext-diagnostic-provider.c
@@ -241,7 +241,7 @@ diagnostic_provider_iface_init (IdeDiagnosticProviderInterface *iface)
   iface->diagnose_finish = ide_gettext_diagnostic_provider_diagnose_finish;
 }
 
-G_DEFINE_TYPE_WITH_CODE (IdeGettextDiagnosticProvider,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeGettextDiagnosticProvider,
                          ide_gettext_diagnostic_provider,
                          IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_DIAGNOSTIC_PROVIDER,
diff --git a/src/plugins/git/daemon/ipc-git-change-monitor-impl.c 
b/src/plugins/git/daemon/ipc-git-change-monitor-impl.c
index ab24eb7fa..c9df257d6 100644
--- a/src/plugins/git/daemon/ipc-git-change-monitor-impl.c
+++ b/src/plugins/git/daemon/ipc-git-change-monitor-impl.c
@@ -297,7 +297,7 @@ git_change_monitor_iface_init (IpcGitChangeMonitorIface *iface)
   iface->handle_close = ipc_git_change_monitor_impl_handle_close;
 }
 
-G_DEFINE_TYPE_WITH_CODE (IpcGitChangeMonitorImpl, ipc_git_change_monitor_impl, 
IPC_TYPE_GIT_CHANGE_MONITOR_SKELETON,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IpcGitChangeMonitorImpl, ipc_git_change_monitor_impl, 
IPC_TYPE_GIT_CHANGE_MONITOR_SKELETON,
                          G_IMPLEMENT_INTERFACE (IPC_TYPE_GIT_CHANGE_MONITOR, git_change_monitor_iface_init))
 
 static void
diff --git a/src/plugins/git/daemon/ipc-git-config-impl.c b/src/plugins/git/daemon/ipc-git-config-impl.c
index 82315319e..23af37e86 100644
--- a/src/plugins/git/daemon/ipc-git-config-impl.c
+++ b/src/plugins/git/daemon/ipc-git-config-impl.c
@@ -97,7 +97,7 @@ git_config_iface_init (IpcGitConfigIface *iface)
   iface->handle_close = ipc_git_config_impl_handle_close;
 }
 
-G_DEFINE_TYPE_WITH_CODE (IpcGitConfigImpl, ipc_git_config_impl, IPC_TYPE_GIT_CONFIG_SKELETON,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IpcGitConfigImpl, ipc_git_config_impl, IPC_TYPE_GIT_CONFIG_SKELETON,
                          G_IMPLEMENT_INTERFACE (IPC_TYPE_GIT_CONFIG, git_config_iface_init))
 
 static void
diff --git a/src/plugins/git/daemon/ipc-git-index-monitor.c b/src/plugins/git/daemon/ipc-git-index-monitor.c
index d8469d956..486b786ab 100644
--- a/src/plugins/git/daemon/ipc-git-index-monitor.c
+++ b/src/plugins/git/daemon/ipc-git-index-monitor.c
@@ -33,7 +33,7 @@ struct _IpcGitIndexMonitor
   guint         changed_source;
 };
 
-G_DEFINE_TYPE (IpcGitIndexMonitor, ipc_git_index_monitor, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IpcGitIndexMonitor, ipc_git_index_monitor, G_TYPE_OBJECT)
 
 enum {
   CHANGED,
diff --git a/src/plugins/git/daemon/ipc-git-remote-callbacks.c 
b/src/plugins/git/daemon/ipc-git-remote-callbacks.c
index 553302b8d..1ad6d50cd 100644
--- a/src/plugins/git/daemon/ipc-git-remote-callbacks.c
+++ b/src/plugins/git/daemon/ipc-git-remote-callbacks.c
@@ -37,7 +37,7 @@ struct _IpcGitRemoteCallbacks
   guint                fraction_changed : 1;
 };
 
-G_DEFINE_TYPE (IpcGitRemoteCallbacks, ipc_git_remote_callbacks, GGIT_TYPE_REMOTE_CALLBACKS)
+G_DEFINE_FINAL_TYPE (IpcGitRemoteCallbacks, ipc_git_remote_callbacks, GGIT_TYPE_REMOTE_CALLBACKS)
 
 static gboolean
 ipc_git_remote_callbacks_update_progress (gpointer data)
diff --git a/src/plugins/git/daemon/ipc-git-repository-impl.c 
b/src/plugins/git/daemon/ipc-git-repository-impl.c
index 74e4f500b..27b06ab7b 100644
--- a/src/plugins/git/daemon/ipc-git-repository-impl.c
+++ b/src/plugins/git/daemon/ipc-git-repository-impl.c
@@ -1074,7 +1074,7 @@ git_repository_iface_init (IpcGitRepositoryIface *iface)
   iface->handle_update_submodules = ipc_git_repository_impl_handle_update_submodules;
 }
 
-G_DEFINE_TYPE_WITH_CODE (IpcGitRepositoryImpl, ipc_git_repository_impl, IPC_TYPE_GIT_REPOSITORY_SKELETON,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IpcGitRepositoryImpl, ipc_git_repository_impl, 
IPC_TYPE_GIT_REPOSITORY_SKELETON,
                          G_IMPLEMENT_INTERFACE (IPC_TYPE_GIT_REPOSITORY, git_repository_iface_init))
 
 static void
diff --git a/src/plugins/git/daemon/ipc-git-service-impl.c b/src/plugins/git/daemon/ipc-git-service-impl.c
index 6b664d823..be2b6d876 100644
--- a/src/plugins/git/daemon/ipc-git-service-impl.c
+++ b/src/plugins/git/daemon/ipc-git-service-impl.c
@@ -330,7 +330,7 @@ git_service_iface_init (IpcGitServiceIface *iface)
   iface->handle_load_config = ipc_git_service_impl_handle_load_config;
 }
 
-G_DEFINE_TYPE_WITH_CODE (IpcGitServiceImpl, ipc_git_service_impl, IPC_TYPE_GIT_SERVICE_SKELETON,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IpcGitServiceImpl, ipc_git_service_impl, IPC_TYPE_GIT_SERVICE_SKELETON,
                          G_IMPLEMENT_INTERFACE (IPC_TYPE_GIT_SERVICE, git_service_iface_init))
 
 static void
diff --git a/src/plugins/git/gbp-git-branch.c b/src/plugins/git/gbp-git-branch.c
index f3e00b03d..1e62d17aa 100644
--- a/src/plugins/git/gbp-git-branch.c
+++ b/src/plugins/git/gbp-git-branch.c
@@ -57,7 +57,7 @@ vcs_branch_iface_init (IdeVcsBranchInterface *iface)
   iface->get_id = gbp_git_branch_get_id;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpGitBranch, gbp_git_branch, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpGitBranch, gbp_git_branch, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_VCS_BRANCH, vcs_branch_iface_init))
 
 static void
diff --git a/src/plugins/git/gbp-git-buffer-addin.c b/src/plugins/git/gbp-git-buffer-addin.c
index 488f14392..3509a85e4 100644
--- a/src/plugins/git/gbp-git-buffer-addin.c
+++ b/src/plugins/git/gbp-git-buffer-addin.c
@@ -140,7 +140,7 @@ buffer_addin_iface_init (IdeBufferAddinInterface *iface)
   iface->settle_finish = gbp_git_buffer_addin_settle_finish;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpGitBufferAddin, gbp_git_buffer_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpGitBufferAddin, gbp_git_buffer_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_BUFFER_ADDIN, buffer_addin_iface_init))
 
 static void
diff --git a/src/plugins/git/gbp-git-buffer-change-monitor.c b/src/plugins/git/gbp-git-buffer-change-monitor.c
index 3528827c4..b606d121f 100644
--- a/src/plugins/git/gbp-git-buffer-change-monitor.c
+++ b/src/plugins/git/gbp-git-buffer-change-monitor.c
@@ -46,7 +46,7 @@ struct _GbpGitBufferChangeMonitor
 enum { SLOW, FAST };
 static const guint g_delay[] = { 750, 50 };
 
-G_DEFINE_TYPE (GbpGitBufferChangeMonitor, gbp_git_buffer_change_monitor, IDE_TYPE_BUFFER_CHANGE_MONITOR)
+G_DEFINE_FINAL_TYPE (GbpGitBufferChangeMonitor, gbp_git_buffer_change_monitor, 
IDE_TYPE_BUFFER_CHANGE_MONITOR)
 
 static gboolean
 queued_update_source_cb (GbpGitBufferChangeMonitor *self)
diff --git a/src/plugins/git/gbp-git-client.c b/src/plugins/git/gbp-git-client.c
index a7eba6adb..716867078 100644
--- a/src/plugins/git/gbp-git-client.c
+++ b/src/plugins/git/gbp-git-client.c
@@ -47,7 +47,7 @@ enum {
   STATE_SHUTDOWN,
 };
 
-G_DEFINE_TYPE (GbpGitClient, gbp_git_client, IDE_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (GbpGitClient, gbp_git_client, IDE_TYPE_OBJECT)
 
 static void
 gbp_git_client_subprocess_spawned (GbpGitClient            *self,
diff --git a/src/plugins/git/gbp-git-dependency-updater.c b/src/plugins/git/gbp-git-dependency-updater.c
index ef12269d3..4c523a96c 100644
--- a/src/plugins/git/gbp-git-dependency-updater.c
+++ b/src/plugins/git/gbp-git-dependency-updater.c
@@ -138,7 +138,7 @@ dependency_updater_iface_init (IdeDependencyUpdaterInterface *iface)
   iface->update_finish = gbp_git_dependency_updater_update_finish;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpGitDependencyUpdater, gbp_git_dependency_updater, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpGitDependencyUpdater, gbp_git_dependency_updater, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_DEPENDENCY_UPDATER,
                                                 dependency_updater_iface_init))
 
diff --git a/src/plugins/git/gbp-git-pipeline-addin.c b/src/plugins/git/gbp-git-pipeline-addin.c
index 991a3a67d..8ff0de47d 100644
--- a/src/plugins/git/gbp-git-pipeline-addin.c
+++ b/src/plugins/git/gbp-git-pipeline-addin.c
@@ -67,7 +67,7 @@ pipeline_addin_iface_init (IdePipelineAddinInterface *iface)
   iface->load = gbp_git_pipeline_addin_load;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpGitPipelineAddin, gbp_git_pipeline_addin, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpGitPipelineAddin, gbp_git_pipeline_addin, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_PIPELINE_ADDIN,
                                                 pipeline_addin_iface_init))
 
diff --git a/src/plugins/git/gbp-git-progress.c b/src/plugins/git/gbp-git-progress.c
index c9703763d..b4afa20d0 100644
--- a/src/plugins/git/gbp-git-progress.c
+++ b/src/plugins/git/gbp-git-progress.c
@@ -29,7 +29,7 @@ struct _GbpGitProgress
   guint withdraw : 1;
 };
 
-G_DEFINE_TYPE (GbpGitProgress, gbp_git_progress, IPC_TYPE_GIT_PROGRESS_SKELETON)
+G_DEFINE_FINAL_TYPE (GbpGitProgress, gbp_git_progress, IPC_TYPE_GIT_PROGRESS_SKELETON)
 
 IpcGitProgress *
 gbp_git_progress_new (GDBusConnection  *connection,
diff --git a/src/plugins/git/gbp-git-submodule-stage.c b/src/plugins/git/gbp-git-submodule-stage.c
index 5258c82af..4780ef5d0 100644
--- a/src/plugins/git/gbp-git-submodule-stage.c
+++ b/src/plugins/git/gbp-git-submodule-stage.c
@@ -37,7 +37,7 @@ struct _GbpGitSubmoduleStage
   guint force_update : 1;
 };
 
-G_DEFINE_TYPE (GbpGitSubmoduleStage, gbp_git_submodule_stage, IDE_TYPE_PIPELINE_STAGE_LAUNCHER)
+G_DEFINE_FINAL_TYPE (GbpGitSubmoduleStage, gbp_git_submodule_stage, IDE_TYPE_PIPELINE_STAGE_LAUNCHER)
 
 GbpGitSubmoduleStage *
 gbp_git_submodule_stage_new (IdeContext *context)
diff --git a/src/plugins/git/gbp-git-tag.c b/src/plugins/git/gbp-git-tag.c
index 5391f2db8..9746fefa2 100644
--- a/src/plugins/git/gbp-git-tag.c
+++ b/src/plugins/git/gbp-git-tag.c
@@ -44,7 +44,7 @@ vcs_tag_iface_init (IdeVcsTagInterface *iface)
   iface->get_name = gbp_git_tag_get_name;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpGitTag, gbp_git_tag, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpGitTag, gbp_git_tag, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_VCS_TAG, vcs_tag_iface_init))
 
 static void
diff --git a/src/plugins/git/gbp-git-vcs-cloner.c b/src/plugins/git/gbp-git-vcs-cloner.c
index 9feb5a922..9b850aaa9 100644
--- a/src/plugins/git/gbp-git-vcs-cloner.c
+++ b/src/plugins/git/gbp-git-vcs-cloner.c
@@ -48,7 +48,7 @@ typedef struct
 
 static void vcs_cloner_iface_init (IdeVcsClonerInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (GbpGitVcsCloner, gbp_git_vcs_cloner, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpGitVcsCloner, gbp_git_vcs_cloner, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_VCS_CLONER, vcs_cloner_iface_init))
 
 static void
diff --git a/src/plugins/git/gbp-git-vcs-config.c b/src/plugins/git/gbp-git-vcs-config.c
index 9d67d2999..f110696d5 100644
--- a/src/plugins/git/gbp-git-vcs-config.c
+++ b/src/plugins/git/gbp-git-vcs-config.c
@@ -39,7 +39,7 @@ struct _GbpGitVcsConfig
 
 static void vcs_config_init (IdeVcsConfigInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (GbpGitVcsConfig, gbp_git_vcs_config, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpGitVcsConfig, gbp_git_vcs_config, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_VCS_CONFIG, vcs_config_init))
 
 static const gchar *
diff --git a/src/plugins/git/gbp-git-vcs-initializer.c b/src/plugins/git/gbp-git-vcs-initializer.c
index faa4f6595..db7fdf95e 100644
--- a/src/plugins/git/gbp-git-vcs-initializer.c
+++ b/src/plugins/git/gbp-git-vcs-initializer.c
@@ -135,7 +135,7 @@ vcs_initializer_iface_init (IdeVcsInitializerInterface *iface)
   iface->initialize_finish = gbp_git_vcs_initializer_initialize_finish;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpGitVcsInitializer, gbp_git_vcs_initializer, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpGitVcsInitializer, gbp_git_vcs_initializer, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_VCS_INITIALIZER, vcs_initializer_iface_init))
 
 static void
diff --git a/src/plugins/git/gbp-git-vcs.c b/src/plugins/git/gbp-git-vcs.c
index f9cc2d8ba..36d89733d 100644
--- a/src/plugins/git/gbp-git-vcs.c
+++ b/src/plugins/git/gbp-git-vcs.c
@@ -549,7 +549,7 @@ vcs_iface_init (IdeVcsInterface *iface)
   iface->list_status_finish = gbp_git_vcs_list_status_finish;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpGitVcs, gbp_git_vcs, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpGitVcs, gbp_git_vcs, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_VCS, vcs_iface_init))
 
 static GParamSpec *properties [N_PROPS];
diff --git a/src/plugins/git/gbp-git-workbench-addin.c b/src/plugins/git/gbp-git-workbench-addin.c
index 520d5f4f1..0dbca9731 100644
--- a/src/plugins/git/gbp-git-workbench-addin.c
+++ b/src/plugins/git/gbp-git-workbench-addin.c
@@ -238,7 +238,7 @@ workbench_addin_iface_init (IdeWorkbenchAddinInterface *iface)
   iface->load_project_finish = gbp_git_workbench_addin_load_project_finish;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpGitWorkbenchAddin, gbp_git_workbench_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpGitWorkbenchAddin, gbp_git_workbench_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_WORKBENCH_ADDIN, workbench_addin_iface_init))
 
 static void
diff --git a/src/plugins/glade/gbp-glade-editor-addin.c b/src/plugins/glade/gbp-glade-editor-addin.c
index 38c738b3c..430eb9abb 100644
--- a/src/plugins/glade/gbp-glade-editor-addin.c
+++ b/src/plugins/glade/gbp-glade-editor-addin.c
@@ -48,7 +48,7 @@ struct _GbpGladeEditorAddin
 
 static void editor_addin_iface_init (IdeEditorAddinInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (GbpGladeEditorAddin, gbp_glade_editor_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpGladeEditorAddin, gbp_glade_editor_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_EDITOR_ADDIN, editor_addin_iface_init))
 
 static void
diff --git a/src/plugins/glade/gbp-glade-frame-addin.c b/src/plugins/glade/gbp-glade-frame-addin.c
index 172448606..862cb8bb3 100644
--- a/src/plugins/glade/gbp-glade-frame-addin.c
+++ b/src/plugins/glade/gbp-glade-frame-addin.c
@@ -43,7 +43,7 @@ struct _GbpGladeFrameAddin
 
 static void frame_addin_iface_init (IdeFrameAddinInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (GbpGladeFrameAddin, gbp_glade_frame_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpGladeFrameAddin, gbp_glade_frame_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_FRAME_ADDIN,
                                                 frame_addin_iface_init))
 
diff --git a/src/plugins/glade/gbp-glade-page.c b/src/plugins/glade/gbp-glade-page.c
index d60abcd72..d41877ed8 100644
--- a/src/plugins/glade/gbp-glade-page.c
+++ b/src/plugins/glade/gbp-glade-page.c
@@ -27,7 +27,7 @@
 #include "gbp-glade-page.h"
 #include "gbp-glade-private.h"
 
-G_DEFINE_TYPE (GbpGladePage, gbp_glade_page, IDE_TYPE_PAGE)
+G_DEFINE_FINAL_TYPE (GbpGladePage, gbp_glade_page, IDE_TYPE_PAGE)
 
 enum {
   PROP_0,
diff --git a/src/plugins/glade/gbp-glade-properties.c b/src/plugins/glade/gbp-glade-properties.c
index 3336909be..01d3d9b3b 100644
--- a/src/plugins/glade/gbp-glade-properties.c
+++ b/src/plugins/glade/gbp-glade-properties.c
@@ -37,7 +37,7 @@ struct _GbpGladeProperties
   DzlDockWidget    *packing_dock;
 };
 
-G_DEFINE_TYPE (GbpGladeProperties, gbp_glade_properties, DZL_TYPE_DOCK_WIDGET)
+G_DEFINE_FINAL_TYPE (GbpGladeProperties, gbp_glade_properties, DZL_TYPE_DOCK_WIDGET)
 
 static void
 adjust_radio_hexpand (GtkWidget *widget,
diff --git a/src/plugins/glade/gbp-glade-workbench-addin.c b/src/plugins/glade/gbp-glade-workbench-addin.c
index 85118ada1..8e8d93dec 100644
--- a/src/plugins/glade/gbp-glade-workbench-addin.c
+++ b/src/plugins/glade/gbp-glade-workbench-addin.c
@@ -393,7 +393,7 @@ workbench_addin_iface_init (IdeWorkbenchAddinInterface *iface)
   iface->open_finish = gbp_glade_workbench_addin_open_finish;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpGladeWorkbenchAddin, gbp_glade_workbench_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpGladeWorkbenchAddin, gbp_glade_workbench_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_WORKBENCH_ADDIN, workbench_addin_iface_init))
 
 static void
diff --git a/src/plugins/gnome-code-assistance/ide-gca-diagnostic-provider.c 
b/src/plugins/gnome-code-assistance/ide-gca-diagnostic-provider.c
index cbfc6cf19..0b749561f 100644
--- a/src/plugins/gnome-code-assistance/ide-gca-diagnostic-provider.c
+++ b/src/plugins/gnome-code-assistance/ide-gca-diagnostic-provider.c
@@ -44,7 +44,7 @@ typedef struct
 
 static void diagnostic_provider_iface_init (IdeDiagnosticProviderInterface *iface);
 
-G_DEFINE_TYPE_EXTENDED (IdeGcaDiagnosticProvider, ide_gca_diagnostic_provider, IDE_TYPE_OBJECT, 0,
+G_DEFINE_TYPE_EXTENDED (IdeGcaDiagnosticProvider, ide_gca_diagnostic_provider, IDE_TYPE_OBJECT, 
G_TYPE_FLAG_FINAL,
                         G_IMPLEMENT_INTERFACE (IDE_TYPE_DIAGNOSTIC_PROVIDER,
                                                diagnostic_provider_iface_init))
 
diff --git a/src/plugins/gnome-code-assistance/ide-gca-preferences-addin.c 
b/src/plugins/gnome-code-assistance/ide-gca-preferences-addin.c
index 58c97f3df..9407b7c35 100644
--- a/src/plugins/gnome-code-assistance/ide-gca-preferences-addin.c
+++ b/src/plugins/gnome-code-assistance/ide-gca-preferences-addin.c
@@ -31,7 +31,7 @@ struct _IdeGcaPreferencesAddin
   guint   pylint;
 };
 
-G_DEFINE_TYPE_EXTENDED (IdeGcaPreferencesAddin, ide_gca_preferences_addin, G_TYPE_OBJECT, 0,
+G_DEFINE_TYPE_EXTENDED (IdeGcaPreferencesAddin, ide_gca_preferences_addin, G_TYPE_OBJECT, G_TYPE_FLAG_FINAL,
                         G_IMPLEMENT_INTERFACE (IDE_TYPE_PREFERENCES_ADDIN,
                                                preferences_addin_iface_init))
 
diff --git a/src/plugins/gnome-code-assistance/ide-gca-service.c 
b/src/plugins/gnome-code-assistance/ide-gca-service.c
index 11f8574d5..d0bc2f4ac 100644
--- a/src/plugins/gnome-code-assistance/ide-gca-service.c
+++ b/src/plugins/gnome-code-assistance/ide-gca-service.c
@@ -36,7 +36,7 @@ struct _IdeGcaService
   gulong           bus_closed_handler;
 };
 
-G_DEFINE_TYPE (IdeGcaService, ide_gca_service, IDE_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeGcaService, ide_gca_service, IDE_TYPE_OBJECT)
 
 static void
 on_bus_closed (GDBusConnection *bus,
diff --git a/src/plugins/greeter/gbp-greeter-application-addin.c 
b/src/plugins/greeter/gbp-greeter-application-addin.c
index f1aad01c7..b4f0b6382 100644
--- a/src/plugins/greeter/gbp-greeter-application-addin.c
+++ b/src/plugins/greeter/gbp-greeter-application-addin.c
@@ -257,7 +257,7 @@ application_addin_iface_init (IdeApplicationAddinInterface *iface)
   iface->activate = gbp_greeter_application_addin_activate;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpGreeterApplicationAddin, gbp_greeter_application_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpGreeterApplicationAddin, gbp_greeter_application_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_APPLICATION_ADDIN, application_addin_iface_init))
 
 static void
diff --git a/src/plugins/grep/gbp-grep-model.c b/src/plugins/grep/gbp-grep-model.c
index fcdfb66de..575e2346f 100644
--- a/src/plugins/grep/gbp-grep-model.c
+++ b/src/plugins/grep/gbp-grep-model.c
@@ -82,7 +82,7 @@ struct _GbpGrepModel
 
 static void tree_model_iface_init (GtkTreeModelIface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (GbpGrepModel, gbp_grep_model, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpGrepModel, gbp_grep_model, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (GTK_TYPE_TREE_MODEL, tree_model_iface_init))
 
 enum {
diff --git a/src/plugins/grep/gbp-grep-panel.c b/src/plugins/grep/gbp-grep-panel.c
index b5c4ced58..dcbeef422 100644
--- a/src/plugins/grep/gbp-grep-panel.c
+++ b/src/plugins/grep/gbp-grep-panel.c
@@ -66,7 +66,7 @@ enum {
   N_PROPS
 };
 
-G_DEFINE_TYPE (GbpGrepPanel, gbp_grep_panel, DZL_TYPE_DOCK_WIDGET)
+G_DEFINE_FINAL_TYPE (GbpGrepPanel, gbp_grep_panel, DZL_TYPE_DOCK_WIDGET)
 
 static GParamSpec *properties [N_PROPS];
 
diff --git a/src/plugins/grep/gbp-grep-popover.c b/src/plugins/grep/gbp-grep-popover.c
index 216ac1b4d..1f9ea7d62 100644
--- a/src/plugins/grep/gbp-grep-popover.c
+++ b/src/plugins/grep/gbp-grep-popover.c
@@ -51,7 +51,7 @@ enum {
   N_PROPS
 };
 
-G_DEFINE_TYPE (GbpGrepPopover, gbp_grep_popover, GTK_TYPE_POPOVER)
+G_DEFINE_FINAL_TYPE (GbpGrepPopover, gbp_grep_popover, GTK_TYPE_POPOVER)
 
 static GParamSpec *properties [N_PROPS];
 
diff --git a/src/plugins/grep/gbp-grep-tree-addin.c b/src/plugins/grep/gbp-grep-tree-addin.c
index 1a36b0d5a..c0ced9424 100644
--- a/src/plugins/grep/gbp-grep-tree-addin.c
+++ b/src/plugins/grep/gbp-grep-tree-addin.c
@@ -133,7 +133,7 @@ tree_addin_iface_init (IdeTreeAddinInterface *iface)
   iface->selection_changed = gbp_grep_tree_addin_selection_changed;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpGrepTreeAddin, gbp_grep_tree_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpGrepTreeAddin, gbp_grep_tree_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_TREE_ADDIN, tree_addin_iface_init))
 
 static void
diff --git a/src/plugins/history/gbp-history-editor-page-addin.c 
b/src/plugins/history/gbp-history-editor-page-addin.c
index 7c19a8e73..b81eca4a2 100644
--- a/src/plugins/history/gbp-history-editor-page-addin.c
+++ b/src/plugins/history/gbp-history-editor-page-addin.c
@@ -352,7 +352,7 @@ editor_view_addin_iface_init (IdeEditorPageAddinInterface *iface)
   iface->frame_set = gbp_history_editor_page_addin_frame_set;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpHistoryEditorPageAddin, gbp_history_editor_page_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpHistoryEditorPageAddin, gbp_history_editor_page_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_EDITOR_PAGE_ADDIN,
                                                 editor_view_addin_iface_init))
 
diff --git a/src/plugins/history/gbp-history-frame-addin.c b/src/plugins/history/gbp-history-frame-addin.c
index a0f5fb3cc..a3c223a58 100644
--- a/src/plugins/history/gbp-history-frame-addin.c
+++ b/src/plugins/history/gbp-history-frame-addin.c
@@ -325,7 +325,7 @@ frame_addin_iface_init (IdeFrameAddinInterface *iface)
   iface->set_page = gbp_history_frame_addin_set_view;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpHistoryFrameAddin, gbp_history_frame_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpHistoryFrameAddin, gbp_history_frame_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_FRAME_ADDIN,
                                                 frame_addin_iface_init))
 
diff --git a/src/plugins/history/gbp-history-item.c b/src/plugins/history/gbp-history-item.c
index 290bf1bc5..b573535d7 100644
--- a/src/plugins/history/gbp-history-item.c
+++ b/src/plugins/history/gbp-history-item.c
@@ -35,7 +35,7 @@ struct _GbpHistoryItem
   guint        line;
 };
 
-G_DEFINE_TYPE (GbpHistoryItem, gbp_history_item, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (GbpHistoryItem, gbp_history_item, G_TYPE_OBJECT)
 
 static void
 gbp_history_item_dispose (GObject *object)
diff --git a/src/plugins/html-completion/ide-html-completion-provider.c 
b/src/plugins/html-completion/ide-html-completion-provider.c
index 462e3f5bd..af01b6d6e 100644
--- a/src/plugins/html-completion/ide-html-completion-provider.c
+++ b/src/plugins/html-completion/ide-html-completion-provider.c
@@ -32,7 +32,7 @@ struct _IdeHtmlCompletionProvider
 
 static void completion_provider_init (IdeCompletionProviderInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IdeHtmlCompletionProvider,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeHtmlCompletionProvider,
                          ide_html_completion_provider,
                          G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_COMPLETION_PROVIDER, completion_provider_init))
diff --git a/src/plugins/html-completion/ide-html-proposal.c b/src/plugins/html-completion/ide-html-proposal.c
index 24efc3b6b..08820bcd3 100644
--- a/src/plugins/html-completion/ide-html-proposal.c
+++ b/src/plugins/html-completion/ide-html-proposal.c
@@ -31,7 +31,7 @@ struct _IdeHtmlProposal
   IdeHtmlProposalKind kind;
 };
 
-G_DEFINE_TYPE_WITH_CODE (IdeHtmlProposal, ide_html_proposal, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeHtmlProposal, ide_html_proposal, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_COMPLETION_PROPOSAL, NULL))
 
 static void
diff --git a/src/plugins/html-completion/ide-html-proposals.c 
b/src/plugins/html-completion/ide-html-proposals.c
index 952590331..e84dffb8f 100644
--- a/src/plugins/html-completion/ide-html-proposals.c
+++ b/src/plugins/html-completion/ide-html-proposals.c
@@ -44,7 +44,7 @@ typedef struct
 
 static void list_model_iface_init (GListModelInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IdeHtmlProposals, ide_html_proposals, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeHtmlProposals, ide_html_proposals, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, list_model_iface_init))
 
 static void
diff --git a/src/plugins/line-spacing/gbp-line-spacing-buffer-addin.c 
b/src/plugins/line-spacing/gbp-line-spacing-buffer-addin.c
index 9a2ec2033..31efd25d5 100644
--- a/src/plugins/line-spacing/gbp-line-spacing-buffer-addin.c
+++ b/src/plugins/line-spacing/gbp-line-spacing-buffer-addin.c
@@ -143,7 +143,7 @@ buffer_addin_iface_init (IdeBufferAddinInterface *iface)
   iface->unload = gbp_line_spacing_buffer_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpLineSpacingBufferAddin, gbp_line_spacing_buffer_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpLineSpacingBufferAddin, gbp_line_spacing_buffer_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_BUFFER_ADDIN, buffer_addin_iface_init))
 
 static void
diff --git a/src/plugins/ls/gbp-ls-editor-page-addin.c b/src/plugins/ls/gbp-ls-editor-page-addin.c
index 8073d54a9..e4e6423f9 100644
--- a/src/plugins/ls/gbp-ls-editor-page-addin.c
+++ b/src/plugins/ls/gbp-ls-editor-page-addin.c
@@ -114,7 +114,7 @@ editor_page_addin_iface_init (IdeEditorPageAddinInterface *iface)
   iface->unload = gbp_ls_editor_page_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpLsEditorPageAddin, gbp_ls_editor_page_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpLsEditorPageAddin, gbp_ls_editor_page_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_EDITOR_PAGE_ADDIN,
                                                 editor_page_addin_iface_init))
 
diff --git a/src/plugins/ls/gbp-ls-model.c b/src/plugins/ls/gbp-ls-model.c
index 6483b9dfb..642621572 100644
--- a/src/plugins/ls/gbp-ls-model.c
+++ b/src/plugins/ls/gbp-ls-model.c
@@ -42,7 +42,7 @@ enum {
 static void async_initable_iface_init (GAsyncInitableIface *iface);
 static void tree_model_iface_init     (GtkTreeModelIface   *iface);
 
-G_DEFINE_TYPE_WITH_CODE (GbpLsModel, gbp_ls_model, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpLsModel, gbp_ls_model, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (G_TYPE_ASYNC_INITABLE, async_initable_iface_init)
                          G_IMPLEMENT_INTERFACE (GTK_TYPE_TREE_MODEL, tree_model_iface_init))
 
diff --git a/src/plugins/ls/gbp-ls-page.c b/src/plugins/ls/gbp-ls-page.c
index a438eea6a..a83f65590 100644
--- a/src/plugins/ls/gbp-ls-page.c
+++ b/src/plugins/ls/gbp-ls-page.c
@@ -53,7 +53,7 @@ enum {
   N_PROPS
 };
 
-G_DEFINE_TYPE (GbpLsPage, gbp_ls_page, IDE_TYPE_PAGE)
+G_DEFINE_FINAL_TYPE (GbpLsPage, gbp_ls_page, IDE_TYPE_PAGE)
 
 static GParamSpec *properties [N_PROPS];
 
diff --git a/src/plugins/ls/gbp-ls-tree-view.c b/src/plugins/ls/gbp-ls-tree-view.c
index fe43fa0d1..372edb87a 100644
--- a/src/plugins/ls/gbp-ls-tree-view.c
+++ b/src/plugins/ls/gbp-ls-tree-view.c
@@ -37,7 +37,7 @@ enum {
 
 static guint signals [N_SIGNALS];
 
-G_DEFINE_TYPE (GbpLsTreeView, gbp_ls_tree_view, GTK_TYPE_TREE_VIEW)
+G_DEFINE_FINAL_TYPE (GbpLsTreeView, gbp_ls_tree_view, GTK_TYPE_TREE_VIEW)
 
 static void
 gbp_ls_tree_view_go_up (GbpLsTreeView *self)
diff --git a/src/plugins/ls/gbp-ls-workbench-addin.c b/src/plugins/ls/gbp-ls-workbench-addin.c
index 308a05f9a..767fde568 100644
--- a/src/plugins/ls/gbp-ls-workbench-addin.c
+++ b/src/plugins/ls/gbp-ls-workbench-addin.c
@@ -192,7 +192,7 @@ workbench_addin_iface_init (IdeWorkbenchAddinInterface *iface)
   iface->unload = gbp_ls_workbench_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpLsWorkbenchAddin, gbp_ls_workbench_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpLsWorkbenchAddin, gbp_ls_workbench_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_WORKBENCH_ADDIN, workbench_addin_iface_init))
 
 static void
diff --git a/src/plugins/meson-templates/resources/src/application.c 
b/src/plugins/meson-templates/resources/src/application.c
index ae844bd22..6f20f3fbc 100644
--- a/src/plugins/meson-templates/resources/src/application.c
+++ b/src/plugins/meson-templates/resources/src/application.c
@@ -8,7 +8,7 @@ struct _{{PreFix}}Application
   GtkApplication parent_instance;
 };
 
-G_DEFINE_TYPE ({{PreFix}}Application, {{prefix_}}_application, GTK_TYPE_APPLICATION)
+G_DEFINE_FINAL_TYPE ({{PreFix}}Application, {{prefix_}}_application, GTK_TYPE_APPLICATION)
 
 {{PreFix}}Application *
 {{prefix_}}_application_new (gchar *application_id,
diff --git a/src/plugins/meson-templates/resources/src/window.c 
b/src/plugins/meson-templates/resources/src/window.c
index 689d03968..880ae59a0 100644
--- a/src/plugins/meson-templates/resources/src/window.c
+++ b/src/plugins/meson-templates/resources/src/window.c
@@ -12,7 +12,7 @@ struct _{{PreFix}}Window
   GtkLabel            *label;
 };
 
-G_DEFINE_TYPE ({{PreFix}}Window, {{prefix_}}_window, GTK_TYPE_APPLICATION_WINDOW)
+G_DEFINE_FINAL_TYPE ({{PreFix}}Window, {{prefix_}}_window, GTK_TYPE_APPLICATION_WINDOW)
 
 static void
 {{prefix_}}_window_class_init ({{PreFix}}WindowClass *klass)
diff --git a/src/plugins/meson/gbp-meson-build-stage-cross-file.c 
b/src/plugins/meson/gbp-meson-build-stage-cross-file.c
index 6d6a8797c..bc7d486c5 100644
--- a/src/plugins/meson/gbp-meson-build-stage-cross-file.c
+++ b/src/plugins/meson/gbp-meson-build-stage-cross-file.c
@@ -33,7 +33,7 @@ struct _GbpMesonBuildStageCrossFile
   IdeToolchain *toolchain;
 };
 
-G_DEFINE_TYPE (GbpMesonBuildStageCrossFile, gbp_meson_build_stage_cross_file, IDE_TYPE_PIPELINE_STAGE)
+G_DEFINE_FINAL_TYPE (GbpMesonBuildStageCrossFile, gbp_meson_build_stage_cross_file, IDE_TYPE_PIPELINE_STAGE)
 
 static void
 add_lang_executable (const gchar *lang,
diff --git a/src/plugins/meson/gbp-meson-build-system-discovery.c 
b/src/plugins/meson/gbp-meson-build-system-discovery.c
index 4028af51a..e9a015dcf 100644
--- a/src/plugins/meson/gbp-meson-build-system-discovery.c
+++ b/src/plugins/meson/gbp-meson-build-system-discovery.c
@@ -76,7 +76,7 @@ build_system_discovery_iface_init (IdeBuildSystemDiscoveryInterface *iface)
   iface->discover = gbp_meson_build_system_discovery_discover;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpMesonBuildSystemDiscovery, gbp_meson_build_system_discovery, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpMesonBuildSystemDiscovery, gbp_meson_build_system_discovery, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_BUILD_SYSTEM_DISCOVERY,
                                                 build_system_discovery_iface_init))
 
diff --git a/src/plugins/meson/gbp-meson-build-system.c b/src/plugins/meson/gbp-meson-build-system.c
index ea90c35e0..d9de95904 100644
--- a/src/plugins/meson/gbp-meson-build-system.c
+++ b/src/plugins/meson/gbp-meson-build-system.c
@@ -40,7 +40,7 @@ struct _GbpMesonBuildSystem
 static void async_initable_iface_init (GAsyncInitableIface     *iface);
 static void build_system_iface_init   (IdeBuildSystemInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (GbpMesonBuildSystem, gbp_meson_build_system, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpMesonBuildSystem, gbp_meson_build_system, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (G_TYPE_ASYNC_INITABLE, async_initable_iface_init)
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_BUILD_SYSTEM, build_system_iface_init))
 
diff --git a/src/plugins/meson/gbp-meson-build-target-provider.c 
b/src/plugins/meson/gbp-meson-build-target-provider.c
index 3dac44cbb..a78e050b3 100644
--- a/src/plugins/meson/gbp-meson-build-target-provider.c
+++ b/src/plugins/meson/gbp-meson-build-target-provider.c
@@ -470,7 +470,7 @@ build_target_provider_iface_init (IdeBuildTargetProviderInterface *iface)
   iface->get_targets_finish = gbp_meson_build_target_provider_get_targets_finish;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpMesonBuildTargetProvider,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpMesonBuildTargetProvider,
                          gbp_meson_build_target_provider,
                          IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_BUILD_TARGET_PROVIDER,
diff --git a/src/plugins/meson/gbp-meson-build-target.c b/src/plugins/meson/gbp-meson-build-target.c
index 43f770daa..eb4c154a1 100644
--- a/src/plugins/meson/gbp-meson-build-target.c
+++ b/src/plugins/meson/gbp-meson-build-target.c
@@ -76,7 +76,7 @@ build_target_iface_init (IdeBuildTargetInterface *iface)
   iface->get_kind = gbp_meson_build_target_get_kind;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpMesonBuildTarget, gbp_meson_build_target, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpMesonBuildTarget, gbp_meson_build_target, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_BUILD_TARGET, build_target_iface_init))
 
 static void
diff --git a/src/plugins/meson/gbp-meson-config-view-addin.c b/src/plugins/meson/gbp-meson-config-view-addin.c
index f89149fcb..acc435dc3 100644
--- a/src/plugins/meson/gbp-meson-config-view-addin.c
+++ b/src/plugins/meson/gbp-meson-config-view-addin.c
@@ -64,7 +64,7 @@ config_view_addin_iface_init (IdeConfigViewAddinInterface *iface)
   iface->load = gbp_meson_config_view_addin_load;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpMesonConfigViewAddin, gbp_meson_config_view_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpMesonConfigViewAddin, gbp_meson_config_view_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_CONFIG_VIEW_ADDIN, config_view_addin_iface_init))
 
 static void
diff --git a/src/plugins/meson/gbp-meson-pipeline-addin.c b/src/plugins/meson/gbp-meson-pipeline-addin.c
index 42cfaa1ab..b8e5574a8 100644
--- a/src/plugins/meson/gbp-meson-pipeline-addin.c
+++ b/src/plugins/meson/gbp-meson-pipeline-addin.c
@@ -282,7 +282,7 @@ pipeline_addin_iface_init (IdePipelineAddinInterface *iface)
   iface->load = gbp_meson_pipeline_addin_load;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpMesonPipelineAddin, gbp_meson_pipeline_addin, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpMesonPipelineAddin, gbp_meson_pipeline_addin, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_PIPELINE_ADDIN,
                                                 pipeline_addin_iface_init))
 
diff --git a/src/plugins/meson/gbp-meson-test-provider.c b/src/plugins/meson/gbp-meson-test-provider.c
index f63fff843..1c235e217 100644
--- a/src/plugins/meson/gbp-meson-test-provider.c
+++ b/src/plugins/meson/gbp-meson-test-provider.c
@@ -43,7 +43,7 @@ typedef struct
   VtePty  *pty;
 } Run;
 
-G_DEFINE_TYPE (GbpMesonTestProvider, gbp_meson_test_provider, IDE_TYPE_TEST_PROVIDER)
+G_DEFINE_FINAL_TYPE (GbpMesonTestProvider, gbp_meson_test_provider, IDE_TYPE_TEST_PROVIDER)
 
 static void
 run_free (Run *run)
diff --git a/src/plugins/meson/gbp-meson-test.c b/src/plugins/meson/gbp-meson-test.c
index 6c8272e60..154d4a2b3 100644
--- a/src/plugins/meson/gbp-meson-test.c
+++ b/src/plugins/meson/gbp-meson-test.c
@@ -40,7 +40,7 @@ enum {
   N_PROPS
 };
 
-G_DEFINE_TYPE (GbpMesonTest, gbp_meson_test, IDE_TYPE_TEST)
+G_DEFINE_FINAL_TYPE (GbpMesonTest, gbp_meson_test, IDE_TYPE_TEST)
 
 static GParamSpec *properties [N_PROPS];
 
diff --git a/src/plugins/meson/gbp-meson-tool-row.c b/src/plugins/meson/gbp-meson-tool-row.c
index 35976e185..2349df1ea 100644
--- a/src/plugins/meson/gbp-meson-tool-row.c
+++ b/src/plugins/meson/gbp-meson-tool-row.c
@@ -37,7 +37,7 @@ struct _GbpMesonToolRow
   GtkButton *delete_button;
 };
 
-G_DEFINE_TYPE (GbpMesonToolRow, gbp_meson_tool_row, GTK_TYPE_LIST_BOX_ROW)
+G_DEFINE_FINAL_TYPE (GbpMesonToolRow, gbp_meson_tool_row, GTK_TYPE_LIST_BOX_ROW)
 
 enum {
   PROP_0,
diff --git a/src/plugins/meson/gbp-meson-toolchain-edition-preferences-addin.c 
b/src/plugins/meson/gbp-meson-toolchain-edition-preferences-addin.c
index 06b23fa8d..574a29f3a 100644
--- a/src/plugins/meson/gbp-meson-toolchain-edition-preferences-addin.c
+++ b/src/plugins/meson/gbp-meson-toolchain-edition-preferences-addin.c
@@ -255,7 +255,7 @@ preferences_addin_iface_init (IdePreferencesAddinInterface *iface)
   iface->unload = gbp_meson_toolchain_edition_preferences_addin_unload;
 }
 
-G_DEFINE_TYPE_EXTENDED (GbpMesonToolchainEditionPreferencesAddin, 
gbp_meson_toolchain_edition_preferences_addin, G_TYPE_OBJECT, 0,
+G_DEFINE_TYPE_EXTENDED (GbpMesonToolchainEditionPreferencesAddin, 
gbp_meson_toolchain_edition_preferences_addin, G_TYPE_OBJECT, G_TYPE_FLAG_FINAL,
                         G_IMPLEMENT_INTERFACE (IDE_TYPE_PREFERENCES_ADDIN, preferences_addin_iface_init))
 
 static void
diff --git a/src/plugins/meson/gbp-meson-toolchain-edition-preferences-row.c 
b/src/plugins/meson/gbp-meson-toolchain-edition-preferences-row.c
index 75bac586b..e93e67fda 100644
--- a/src/plugins/meson/gbp-meson-toolchain-edition-preferences-row.c
+++ b/src/plugins/meson/gbp-meson-toolchain-edition-preferences-row.c
@@ -44,7 +44,7 @@ struct _GbpMesonToolchainEditionPreferencesRow
   GtkPopover *popover;
 };
 
-G_DEFINE_TYPE (GbpMesonToolchainEditionPreferencesRow, gbp_meson_toolchain_edition_preferences_row, 
DZL_TYPE_PREFERENCES_BIN)
+G_DEFINE_FINAL_TYPE (GbpMesonToolchainEditionPreferencesRow, gbp_meson_toolchain_edition_preferences_row, 
DZL_TYPE_PREFERENCES_BIN)
 
 enum {
   PROP_0,
diff --git a/src/plugins/meson/gbp-meson-toolchain-provider.c 
b/src/plugins/meson/gbp-meson-toolchain-provider.c
index 9c5131726..24f744675 100644
--- a/src/plugins/meson/gbp-meson-toolchain-provider.c
+++ b/src/plugins/meson/gbp-meson-toolchain-provider.c
@@ -328,7 +328,7 @@ toolchain_provider_iface_init (IdeToolchainProviderInterface *iface)
   iface->unload = gbp_meson_toolchain_provider_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpMesonToolchainProvider,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpMesonToolchainProvider,
                          gbp_meson_toolchain_provider,
                          IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_TOOLCHAIN_PROVIDER,
diff --git a/src/plugins/meson/gbp-meson-toolchain.c b/src/plugins/meson/gbp-meson-toolchain.c
index 272f44902..9a52fe280 100644
--- a/src/plugins/meson/gbp-meson-toolchain.c
+++ b/src/plugins/meson/gbp-meson-toolchain.c
@@ -33,7 +33,7 @@ struct _GbpMesonToolchain
   gchar                  *file_path;
 };
 
-G_DEFINE_TYPE (GbpMesonToolchain, gbp_meson_toolchain, IDE_TYPE_SIMPLE_TOOLCHAIN)
+G_DEFINE_FINAL_TYPE (GbpMesonToolchain, gbp_meson_toolchain, IDE_TYPE_SIMPLE_TOOLCHAIN)
 
 enum {
   PROP_0,
diff --git a/src/plugins/messages/gbp-messages-editor-addin.c 
b/src/plugins/messages/gbp-messages-editor-addin.c
index 1e634a385..520da921f 100644
--- a/src/plugins/messages/gbp-messages-editor-addin.c
+++ b/src/plugins/messages/gbp-messages-editor-addin.c
@@ -74,7 +74,7 @@ editor_addin_iface_init (IdeEditorAddinInterface *iface)
   iface->unload = gbp_messages_editor_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpMessagesEditorAddin, gbp_messages_editor_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpMessagesEditorAddin, gbp_messages_editor_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_EDITOR_ADDIN, editor_addin_iface_init))
 
 static void
diff --git a/src/plugins/messages/gbp-messages-panel.c b/src/plugins/messages/gbp-messages-panel.c
index 8bf63ac5b..cefcef6f4 100644
--- a/src/plugins/messages/gbp-messages-panel.c
+++ b/src/plugins/messages/gbp-messages-panel.c
@@ -35,7 +35,7 @@ struct _GbpMessagesPanel
   IdeTerminal  *terminal;
 };
 
-G_DEFINE_TYPE (GbpMessagesPanel, gbp_messages_panel, DZL_TYPE_DOCK_WIDGET)
+G_DEFINE_FINAL_TYPE (GbpMessagesPanel, gbp_messages_panel, DZL_TYPE_DOCK_WIDGET)
 
 static char *
 ensure_crlf (const char *message)
diff --git a/src/plugins/modelines/gbp-modelines-file-settings.c 
b/src/plugins/modelines/gbp-modelines-file-settings.c
index 8c75ca757..17d3f9e4c 100644
--- a/src/plugins/modelines/gbp-modelines-file-settings.c
+++ b/src/plugins/modelines/gbp-modelines-file-settings.c
@@ -33,7 +33,7 @@ struct _GbpModelinesFileSettings
   IdeFileSettings parent_instance;
 };
 
-G_DEFINE_TYPE (GbpModelinesFileSettings, gbp_modelines_file_settings, IDE_TYPE_FILE_SETTINGS)
+G_DEFINE_FINAL_TYPE (GbpModelinesFileSettings, gbp_modelines_file_settings, IDE_TYPE_FILE_SETTINGS)
 
 static gboolean
 buffer_file_matches (GbpModelinesFileSettings *self,
diff --git a/src/plugins/newcomers/gbp-newcomers-project.c b/src/plugins/newcomers/gbp-newcomers-project.c
index eb460b8fb..3653fa16f 100644
--- a/src/plugins/newcomers/gbp-newcomers-project.c
+++ b/src/plugins/newcomers/gbp-newcomers-project.c
@@ -45,7 +45,7 @@ enum {
   N_PROPS
 };
 
-G_DEFINE_TYPE (GbpNewcomersProject, gbp_newcomers_project, IDE_TYPE_GREETER_ROW)
+G_DEFINE_FINAL_TYPE (GbpNewcomersProject, gbp_newcomers_project, IDE_TYPE_GREETER_ROW)
 
 static GParamSpec *properties [N_PROPS];
 
diff --git a/src/plugins/newcomers/gbp-newcomers-section.c b/src/plugins/newcomers/gbp-newcomers-section.c
index d719b0311..d4d8d83b6 100644
--- a/src/plugins/newcomers/gbp-newcomers-section.c
+++ b/src/plugins/newcomers/gbp-newcomers-section.c
@@ -171,7 +171,7 @@ greeter_section_iface_init (IdeGreeterSectionInterface *iface)
   iface->set_selection_mode = gbp_newcomers_section_set_selection_mode;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpNewcomersSection, gbp_newcomers_section, GTK_TYPE_BIN,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpNewcomersSection, gbp_newcomers_section, GTK_TYPE_BIN,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_GREETER_SECTION,
                                                 greeter_section_iface_init))
 
diff --git a/src/plugins/notification/ide-notification-addin.c 
b/src/plugins/notification/ide-notification-addin.c
index 8e4d5a375..89c373b50 100644
--- a/src/plugins/notification/ide-notification-addin.c
+++ b/src/plugins/notification/ide-notification-addin.c
@@ -41,7 +41,7 @@ struct _IdeNotificationAddin
 
 static void addin_iface_init (IdePipelineAddinInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IdeNotificationAddin,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeNotificationAddin,
                          ide_notification_addin,
                          IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_PIPELINE_ADDIN, addin_iface_init))
diff --git a/src/plugins/omni-gutter/gbp-omni-gutter-editor-page-addin.c 
b/src/plugins/omni-gutter/gbp-omni-gutter-editor-page-addin.c
index 9b740f7d4..d73137fa1 100644
--- a/src/plugins/omni-gutter/gbp-omni-gutter-editor-page-addin.c
+++ b/src/plugins/omni-gutter/gbp-omni-gutter-editor-page-addin.c
@@ -65,7 +65,7 @@ editor_page_addin_iface_init (IdeEditorPageAddinInterface *iface)
   iface->unload = gbp_omni_gutter_editor_page_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpOmniGutterEditorPageAddin, gbp_omni_gutter_editor_page_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpOmniGutterEditorPageAddin, gbp_omni_gutter_editor_page_addin, 
G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_EDITOR_PAGE_ADDIN, editor_page_addin_iface_init))
 
 static void
diff --git a/src/plugins/omni-gutter/gbp-omni-gutter-renderer.c 
b/src/plugins/omni-gutter/gbp-omni-gutter-renderer.c
index 9f24e0c5f..2499c2d6a 100644
--- a/src/plugins/omni-gutter/gbp-omni-gutter-renderer.c
+++ b/src/plugins/omni-gutter/gbp-omni-gutter-renderer.c
@@ -236,7 +236,7 @@ typedef struct
 static void gbp_omni_gutter_renderer_reload_icons (GbpOmniGutterRenderer *self);
 static void gutter_iface_init                     (IdeGutterInterface    *iface);
 
-G_DEFINE_TYPE_WITH_CODE (GbpOmniGutterRenderer,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpOmniGutterRenderer,
                          gbp_omni_gutter_renderer,
                          GTK_SOURCE_TYPE_GUTTER_RENDERER,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_GUTTER, gutter_iface_init))
diff --git a/src/plugins/open-with-external/gbp-owe-workbench-addin.c 
b/src/plugins/open-with-external/gbp-owe-workbench-addin.c
index 4d1588d9b..51d2da844 100644
--- a/src/plugins/open-with-external/gbp-owe-workbench-addin.c
+++ b/src/plugins/open-with-external/gbp-owe-workbench-addin.c
@@ -35,7 +35,7 @@ struct _GbpOweWorkbenchAddin
 
 static void addin_iface_init (IdeWorkbenchAddinInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (GbpOweWorkbenchAddin,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpOweWorkbenchAddin,
                          gbp_owe_workbench_addin,
                          IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_WORKBENCH_ADDIN, addin_iface_init))
diff --git a/src/plugins/podman/gbp-podman-runtime-provider.c 
b/src/plugins/podman/gbp-podman-runtime-provider.c
index 782064343..c41c40c32 100644
--- a/src/plugins/podman/gbp-podman-runtime-provider.c
+++ b/src/plugins/podman/gbp-podman-runtime-provider.c
@@ -445,7 +445,7 @@ runtime_provider_iface_init (IdeRuntimeProviderInterface *iface)
   iface->bootstrap_finish = gbp_podman_runtime_provider_bootstrap_finish;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpPodmanRuntimeProvider, gbp_podman_runtime_provider, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpPodmanRuntimeProvider, gbp_podman_runtime_provider, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_RUNTIME_PROVIDER, runtime_provider_iface_init))
 
 static void
diff --git a/src/plugins/podman/gbp-podman-runtime.c b/src/plugins/podman/gbp-podman-runtime.c
index 60fa318f8..83630be5f 100644
--- a/src/plugins/podman/gbp-podman-runtime.c
+++ b/src/plugins/podman/gbp-podman-runtime.c
@@ -36,7 +36,7 @@ struct _GbpPodmanRuntime
   guint       has_started : 1;
 };
 
-G_DEFINE_TYPE (GbpPodmanRuntime, gbp_podman_runtime, IDE_TYPE_RUNTIME)
+G_DEFINE_FINAL_TYPE (GbpPodmanRuntime, gbp_podman_runtime, IDE_TYPE_RUNTIME)
 
 static void
 maybe_start (GbpPodmanRuntime *self)
diff --git a/src/plugins/podman/gbp-podman-subprocess-launcher.c 
b/src/plugins/podman/gbp-podman-subprocess-launcher.c
index e2fe38b96..085e44353 100644
--- a/src/plugins/podman/gbp-podman-subprocess-launcher.c
+++ b/src/plugins/podman/gbp-podman-subprocess-launcher.c
@@ -36,7 +36,7 @@ enum {
   N_PROPS
 };
 
-G_DEFINE_TYPE (GbpPodmanSubprocessLauncher, gbp_podman_subprocess_launcher, IDE_TYPE_SUBPROCESS_LAUNCHER)
+G_DEFINE_FINAL_TYPE (GbpPodmanSubprocessLauncher, gbp_podman_subprocess_launcher, 
IDE_TYPE_SUBPROCESS_LAUNCHER)
 
 static GParamSpec *properties [N_PROPS];
 
diff --git a/src/plugins/project-tree/gbp-new-file-popover.c b/src/plugins/project-tree/gbp-new-file-popover.c
index a975f7302..7f61207dc 100644
--- a/src/plugins/project-tree/gbp-new-file-popover.c
+++ b/src/plugins/project-tree/gbp-new-file-popover.c
@@ -40,7 +40,7 @@ struct _GbpNewFilePopover
   GtkLabel     *title;
 };
 
-G_DEFINE_TYPE (GbpNewFilePopover, gbp_new_file_popover, GTK_TYPE_POPOVER)
+G_DEFINE_FINAL_TYPE (GbpNewFilePopover, gbp_new_file_popover, GTK_TYPE_POPOVER)
 
 enum {
   PROP_0,
diff --git a/src/plugins/project-tree/gbp-project-tree-addin.c 
b/src/plugins/project-tree/gbp-project-tree-addin.c
index a55e4e80d..aa879cb08 100644
--- a/src/plugins/project-tree/gbp-project-tree-addin.c
+++ b/src/plugins/project-tree/gbp-project-tree-addin.c
@@ -981,7 +981,7 @@ gbp_project_tree_addin_settings_changed (GbpProjectTreeAddin *self,
     ide_tree_model_invalidate (self->model, NULL);
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpProjectTreeAddin, gbp_project_tree_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpProjectTreeAddin, gbp_project_tree_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_TREE_ADDIN, tree_addin_iface_init))
 
 static void
diff --git a/src/plugins/project-tree/gbp-project-tree-frame-addin.c 
b/src/plugins/project-tree/gbp-project-tree-frame-addin.c
index c45b3b9d7..70e7485ca 100644
--- a/src/plugins/project-tree/gbp-project-tree-frame-addin.c
+++ b/src/plugins/project-tree/gbp-project-tree-frame-addin.c
@@ -116,7 +116,7 @@ frame_addin_iface_init (IdeFrameAddinInterface *iface)
   iface->set_page = gbp_project_tree_frame_addin_set_page;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpProjectTreeFrameAddin, gbp_project_tree_frame_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpProjectTreeFrameAddin, gbp_project_tree_frame_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_FRAME_ADDIN, frame_addin_iface_init))
 
 static void
diff --git a/src/plugins/project-tree/gbp-project-tree-pane.c 
b/src/plugins/project-tree/gbp-project-tree-pane.c
index 22c62879d..906b5c74e 100644
--- a/src/plugins/project-tree/gbp-project-tree-pane.c
+++ b/src/plugins/project-tree/gbp-project-tree-pane.c
@@ -25,7 +25,7 @@
 #include "gbp-project-tree-private.h"
 #include "gbp-project-tree.h"
 
-G_DEFINE_TYPE (GbpProjectTreePane, gbp_project_tree_pane, IDE_TYPE_PANE)
+G_DEFINE_FINAL_TYPE (GbpProjectTreePane, gbp_project_tree_pane, IDE_TYPE_PANE)
 
 static void
 gbp_project_tree_pane_class_init (GbpProjectTreePaneClass *klass)
diff --git a/src/plugins/project-tree/gbp-project-tree-workspace-addin.c 
b/src/plugins/project-tree/gbp-project-tree-workspace-addin.c
index 4b82549ed..f7b49c708 100644
--- a/src/plugins/project-tree/gbp-project-tree-workspace-addin.c
+++ b/src/plugins/project-tree/gbp-project-tree-workspace-addin.c
@@ -90,7 +90,7 @@ workspace_addin_iface_init (IdeWorkspaceAddinInterface *iface)
   iface->unload = gbp_project_tree_workspace_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpProjectTreeWorkspaceAddin, gbp_project_tree_workspace_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpProjectTreeWorkspaceAddin, gbp_project_tree_workspace_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_WORKSPACE_ADDIN, workspace_addin_iface_init))
 
 static void
diff --git a/src/plugins/project-tree/gbp-project-tree.c b/src/plugins/project-tree/gbp-project-tree.c
index c11984a1a..c54d08a4a 100644
--- a/src/plugins/project-tree/gbp-project-tree.c
+++ b/src/plugins/project-tree/gbp-project-tree.c
@@ -34,7 +34,7 @@ struct _GbpProjectTree
   IdeTree parent_instance;
 };
 
-G_DEFINE_TYPE (GbpProjectTree, gbp_project_tree, IDE_TYPE_TREE)
+G_DEFINE_FINAL_TYPE (GbpProjectTree, gbp_project_tree, IDE_TYPE_TREE)
 
 static IdeTreeNodeVisit
 locate_project_files (IdeTreeNode *node,
diff --git a/src/plugins/project-tree/gbp-rename-file-popover.c 
b/src/plugins/project-tree/gbp-rename-file-popover.c
index 3b6f1dfd5..a13dd1741 100644
--- a/src/plugins/project-tree/gbp-rename-file-popover.c
+++ b/src/plugins/project-tree/gbp-rename-file-popover.c
@@ -54,7 +54,7 @@ enum {
   N_SIGNALS
 };
 
-G_DEFINE_TYPE (GbpRenameFilePopover, gbp_rename_file_popover, GTK_TYPE_POPOVER)
+G_DEFINE_FINAL_TYPE (GbpRenameFilePopover, gbp_rename_file_popover, GTK_TYPE_POPOVER)
 
 static GParamSpec *properties [N_PROPS];
 static guint signals [N_SIGNALS];
diff --git a/src/plugins/python-pack/ide-python-indenter.c b/src/plugins/python-pack/ide-python-indenter.c
index 2599a3284..5864fb3b7 100644
--- a/src/plugins/python-pack/ide-python-indenter.c
+++ b/src/plugins/python-pack/ide-python-indenter.c
@@ -39,7 +39,7 @@ struct _IdePythonIndenter
 
 static void indenter_iface_init (IdeIndenterInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IdePythonIndenter, ide_python_indenter, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdePythonIndenter, ide_python_indenter, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_INDENTER, indenter_iface_init))
 
 static gboolean
diff --git a/src/plugins/qemu/gbp-qemu-device-provider.c b/src/plugins/qemu/gbp-qemu-device-provider.c
index a8d2add5f..b9a3be2a9 100644
--- a/src/plugins/qemu/gbp-qemu-device-provider.c
+++ b/src/plugins/qemu/gbp-qemu-device-provider.c
@@ -30,7 +30,7 @@ struct _GbpQemuDeviceProvider
   IdeDeviceProvider parent_instance;
 };
 
-G_DEFINE_TYPE (GbpQemuDeviceProvider, gbp_qemu_device_provider, IDE_TYPE_DEVICE_PROVIDER)
+G_DEFINE_FINAL_TYPE (GbpQemuDeviceProvider, gbp_qemu_device_provider, IDE_TYPE_DEVICE_PROVIDER)
 
 #ifdef __linux__
 static const struct {
diff --git a/src/plugins/quick-highlight/gbp-quick-highlight-editor-page-addin.c 
b/src/plugins/quick-highlight/gbp-quick-highlight-editor-page-addin.c
index fd0d14428..b6925e1f8 100644
--- a/src/plugins/quick-highlight/gbp-quick-highlight-editor-page-addin.c
+++ b/src/plugins/quick-highlight/gbp-quick-highlight-editor-page-addin.c
@@ -259,7 +259,7 @@ editor_view_addin_iface_init (IdeEditorPageAddinInterface *iface)
   iface->unload = gbp_quick_highlight_editor_page_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpQuickHighlightEditorPageAddin,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpQuickHighlightEditorPageAddin,
                          gbp_quick_highlight_editor_page_addin,
                          G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_EDITOR_PAGE_ADDIN,
diff --git a/src/plugins/quick-highlight/gbp-quick-highlight-preferences.c 
b/src/plugins/quick-highlight/gbp-quick-highlight-preferences.c
index c83985312..f55099c31 100644
--- a/src/plugins/quick-highlight/gbp-quick-highlight-preferences.c
+++ b/src/plugins/quick-highlight/gbp-quick-highlight-preferences.c
@@ -74,7 +74,7 @@ preferences_addin_iface_init (IdePreferencesAddinInterface *iface)
   iface->unload = gbp_quick_highlight_preferences_unload;
 }
 
-G_DEFINE_TYPE_EXTENDED (GbpQuickHighlightPreferences, gbp_quick_highlight_preferences, G_TYPE_OBJECT, 0,
+G_DEFINE_TYPE_EXTENDED (GbpQuickHighlightPreferences, gbp_quick_highlight_preferences, G_TYPE_OBJECT, 
G_TYPE_FLAG_FINAL,
                         G_IMPLEMENT_INTERFACE (IDE_TYPE_PREFERENCES_ADDIN, preferences_addin_iface_init))
 
 static void
diff --git a/src/plugins/recent/gbp-recent-section.c b/src/plugins/recent/gbp-recent-section.c
index fd5bc61e8..40ed6dca6 100644
--- a/src/plugins/recent/gbp-recent-section.c
+++ b/src/plugins/recent/gbp-recent-section.c
@@ -532,7 +532,7 @@ greeter_section_iface_init (IdeGreeterSectionInterface *iface)
   iface->purge_selected = gbp_recent_section_purge_selected;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpRecentSection, gbp_recent_section, GTK_TYPE_BIN,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpRecentSection, gbp_recent_section, GTK_TYPE_BIN,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_GREETER_SECTION,
                                                 greeter_section_iface_init))
 
diff --git a/src/plugins/recent/gbp-recent-workbench-addin.c b/src/plugins/recent/gbp-recent-workbench-addin.c
index e432acc9e..84a57f7f5 100644
--- a/src/plugins/recent/gbp-recent-workbench-addin.c
+++ b/src/plugins/recent/gbp-recent-workbench-addin.c
@@ -247,7 +247,7 @@ workbench_addin_iface_init (IdeWorkbenchAddinInterface *iface)
   iface->project_loaded = gbp_recent_workbench_addin_project_loaded;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpRecentWorkbenchAddin, gbp_recent_workbench_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpRecentWorkbenchAddin, gbp_recent_workbench_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_WORKBENCH_ADDIN, workbench_addin_iface_init))
 
 static void
diff --git a/src/plugins/restore-cursor/gbp-restore-cursor-buffer-addin.c 
b/src/plugins/restore-cursor/gbp-restore-cursor-buffer-addin.c
index 677f09b22..85ca86968 100644
--- a/src/plugins/restore-cursor/gbp-restore-cursor-buffer-addin.c
+++ b/src/plugins/restore-cursor/gbp-restore-cursor-buffer-addin.c
@@ -136,7 +136,7 @@ buffer_addin_iface_init (IdeBufferAddinInterface *iface)
   iface->file_saved = gbp_restore_cursor_buffer_addin_file_saved;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpRestoreCursorBufferAddin, gbp_restore_cursor_buffer_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpRestoreCursorBufferAddin, gbp_restore_cursor_buffer_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_BUFFER_ADDIN, buffer_addin_iface_init))
 
 static void
diff --git a/src/plugins/retab/gbp-retab-editor-page-addin.c b/src/plugins/retab/gbp-retab-editor-page-addin.c
index 49c496d7b..57b4b8cd3 100644
--- a/src/plugins/retab/gbp-retab-editor-page-addin.c
+++ b/src/plugins/retab/gbp-retab-editor-page-addin.c
@@ -210,7 +210,7 @@ editor_view_addin_iface_init (IdeEditorPageAddinInterface *iface)
   iface->unload = gbp_retab_editor_page_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpRetabEditorPageAddin, gbp_retab_editor_page_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpRetabEditorPageAddin, gbp_retab_editor_page_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_EDITOR_PAGE_ADDIN,
                                                 editor_view_addin_iface_init))
 
diff --git a/src/plugins/rust-analyzer/rust-analyzer-completion-provider.c 
b/src/plugins/rust-analyzer/rust-analyzer-completion-provider.c
index 92f31a18e..88cbaa1ce 100644
--- a/src/plugins/rust-analyzer/rust-analyzer-completion-provider.c
+++ b/src/plugins/rust-analyzer/rust-analyzer-completion-provider.c
@@ -28,7 +28,7 @@ struct _RustAnalyzerCompletionProvider
 
 static void provider_iface_init (IdeCompletionProviderInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (RustAnalyzerCompletionProvider,
+G_DEFINE_FINAL_TYPE_WITH_CODE (RustAnalyzerCompletionProvider,
                          rust_analyzer_completion_provider,
                          IDE_TYPE_LSP_COMPLETION_PROVIDER,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_COMPLETION_PROVIDER, provider_iface_init))
diff --git a/src/plugins/rust-analyzer/rust-analyzer-diagnostic-provider.c 
b/src/plugins/rust-analyzer/rust-analyzer-diagnostic-provider.c
index 55dc1391e..4d27e3de9 100644
--- a/src/plugins/rust-analyzer/rust-analyzer-diagnostic-provider.c
+++ b/src/plugins/rust-analyzer/rust-analyzer-diagnostic-provider.c
@@ -28,7 +28,7 @@ struct _RustAnalyzerDiagnosticProvider
 
 static void provider_iface_init (IdeDiagnosticProviderInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (RustAnalyzerDiagnosticProvider,
+G_DEFINE_FINAL_TYPE_WITH_CODE (RustAnalyzerDiagnosticProvider,
                          rust_analyzer_diagnostic_provider,
                          IDE_TYPE_LSP_DIAGNOSTIC_PROVIDER,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_DIAGNOSTIC_PROVIDER, provider_iface_init))
diff --git a/src/plugins/rust-analyzer/rust-analyzer-formatter.c 
b/src/plugins/rust-analyzer/rust-analyzer-formatter.c
index e8b441dfb..33df07b30 100644
--- a/src/plugins/rust-analyzer/rust-analyzer-formatter.c
+++ b/src/plugins/rust-analyzer/rust-analyzer-formatter.c
@@ -28,7 +28,7 @@ struct _RustAnalyzerFormatter
 
 static void provider_iface_init (IdeFormatterInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (RustAnalyzerFormatter,
+G_DEFINE_FINAL_TYPE_WITH_CODE (RustAnalyzerFormatter,
                          rust_analyzer_formatter,
                          IDE_TYPE_LSP_FORMATTER,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_FORMATTER, provider_iface_init))
diff --git a/src/plugins/rust-analyzer/rust-analyzer-highlighter.c 
b/src/plugins/rust-analyzer/rust-analyzer-highlighter.c
index 603f6b864..0c2e1fa75 100644
--- a/src/plugins/rust-analyzer/rust-analyzer-highlighter.c
+++ b/src/plugins/rust-analyzer/rust-analyzer-highlighter.c
@@ -32,7 +32,7 @@ struct _RustAnalyzerHighlighter
 
 static void provider_iface_init (IdeHighlighterInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (RustAnalyzerHighlighter,
+G_DEFINE_FINAL_TYPE_WITH_CODE (RustAnalyzerHighlighter,
                          rust_analyzer_highlighter,
                          IDE_TYPE_LSP_HIGHLIGHTER,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_HIGHLIGHTER, provider_iface_init))
diff --git a/src/plugins/rust-analyzer/rust-analyzer-hover-provider.c 
b/src/plugins/rust-analyzer/rust-analyzer-hover-provider.c
index 00d194d0f..5cd556892 100644
--- a/src/plugins/rust-analyzer/rust-analyzer-hover-provider.c
+++ b/src/plugins/rust-analyzer/rust-analyzer-hover-provider.c
@@ -26,7 +26,7 @@ struct _RustAnalyzerHoverProvider
   IdeLspHoverProvider parent_instance;
 };
 
-G_DEFINE_TYPE (RustAnalyzerHoverProvider,
+G_DEFINE_FINAL_TYPE (RustAnalyzerHoverProvider,
                rust_analyzer_hover_provider,
                IDE_TYPE_LSP_HOVER_PROVIDER)
 
diff --git a/src/plugins/rust-analyzer/rust-analyzer-pipeline-addin.c 
b/src/plugins/rust-analyzer/rust-analyzer-pipeline-addin.c
index 016264645..51ec58a96 100644
--- a/src/plugins/rust-analyzer/rust-analyzer-pipeline-addin.c
+++ b/src/plugins/rust-analyzer/rust-analyzer-pipeline-addin.c
@@ -41,7 +41,7 @@ struct _RustAnalyzerPipelineAddin
 
 static void pipeline_addin_iface_init (IdePipelineAddinInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (RustAnalyzerPipelineAddin, rust_analyzer_pipeline_addin, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (RustAnalyzerPipelineAddin, rust_analyzer_pipeline_addin, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_PIPELINE_ADDIN, pipeline_addin_iface_init))
 
 static void
diff --git a/src/plugins/rust-analyzer/rust-analyzer-preferences-addin.c 
b/src/plugins/rust-analyzer/rust-analyzer-preferences-addin.c
index 2ef63cb4a..93d50b42c 100644
--- a/src/plugins/rust-analyzer/rust-analyzer-preferences-addin.c
+++ b/src/plugins/rust-analyzer/rust-analyzer-preferences-addin.c
@@ -30,7 +30,7 @@ struct _RustAnalyzerPreferencesAddin
 
 static void preferences_addin_iface_init (IdePreferencesAddinInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (RustAnalyzerPreferencesAddin,
+G_DEFINE_FINAL_TYPE_WITH_CODE (RustAnalyzerPreferencesAddin,
                          rust_analyzer_preferences_addin,
                          IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_PREFERENCES_ADDIN, preferences_addin_iface_init))
diff --git a/src/plugins/rust-analyzer/rust-analyzer-rename-provider.c 
b/src/plugins/rust-analyzer/rust-analyzer-rename-provider.c
index edc251ae3..71f4f962e 100644
--- a/src/plugins/rust-analyzer/rust-analyzer-rename-provider.c
+++ b/src/plugins/rust-analyzer/rust-analyzer-rename-provider.c
@@ -28,7 +28,7 @@ struct _RustAnalyzerRenameProvider
 
 static void provider_iface_init (IdeRenameProviderInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (RustAnalyzerRenameProvider,
+G_DEFINE_FINAL_TYPE_WITH_CODE (RustAnalyzerRenameProvider,
                          rust_analyzer_rename_provider,
                          IDE_TYPE_LSP_RENAME_PROVIDER,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_RENAME_PROVIDER, provider_iface_init))
diff --git a/src/plugins/rust-analyzer/rust-analyzer-search-provider.c 
b/src/plugins/rust-analyzer/rust-analyzer-search-provider.c
index 538aff65b..c3c9d516a 100644
--- a/src/plugins/rust-analyzer/rust-analyzer-search-provider.c
+++ b/src/plugins/rust-analyzer/rust-analyzer-search-provider.c
@@ -32,7 +32,7 @@ struct _RustAnalyzerSearchProvider
 
 static void provider_iface_init (IdeSearchProviderInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (RustAnalyzerSearchProvider,
+G_DEFINE_FINAL_TYPE_WITH_CODE (RustAnalyzerSearchProvider,
                          rust_analyzer_search_provider,
                          IDE_TYPE_LSP_SEARCH_PROVIDER,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_SEARCH_PROVIDER, provider_iface_init))
diff --git a/src/plugins/rust-analyzer/rust-analyzer-service.c 
b/src/plugins/rust-analyzer/rust-analyzer-service.c
index 4e1924717..f6c16e2b6 100644
--- a/src/plugins/rust-analyzer/rust-analyzer-service.c
+++ b/src/plugins/rust-analyzer/rust-analyzer-service.c
@@ -41,7 +41,7 @@ struct _RustAnalyzerService
 
 static void workbench_addin_iface_init (IdeWorkbenchAddinInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (RustAnalyzerService, rust_analyzer_service, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (RustAnalyzerService, rust_analyzer_service, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_WORKBENCH_ADDIN, workbench_addin_iface_init))
 
 enum {
diff --git a/src/plugins/rust-analyzer/rust-analyzer-symbol-resolver.c 
b/src/plugins/rust-analyzer/rust-analyzer-symbol-resolver.c
index 92466fbfe..bb55804f6 100644
--- a/src/plugins/rust-analyzer/rust-analyzer-symbol-resolver.c
+++ b/src/plugins/rust-analyzer/rust-analyzer-symbol-resolver.c
@@ -28,7 +28,7 @@ struct _RustAnalyzerSymbolResolver
 
 static void symbol_iface_init (IdeSymbolResolverInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (RustAnalyzerSymbolResolver,
+G_DEFINE_FINAL_TYPE_WITH_CODE (RustAnalyzerSymbolResolver,
                          rust_analyzer_symbol_resolver,
                          IDE_TYPE_LSP_SYMBOL_RESOLVER,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_SYMBOL_RESOLVER, symbol_iface_init))
diff --git a/src/plugins/shellcmd/gbp-shellcmd-application-addin.c 
b/src/plugins/shellcmd/gbp-shellcmd-application-addin.c
index 364feb022..659379aad 100644
--- a/src/plugins/shellcmd/gbp-shellcmd-application-addin.c
+++ b/src/plugins/shellcmd/gbp-shellcmd-application-addin.c
@@ -77,7 +77,7 @@ app_addin_iface_init (IdeApplicationAddinInterface *iface)
   iface->unload = gbp_shellcmd_application_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpShellcmdApplicationAddin, gbp_shellcmd_application_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpShellcmdApplicationAddin, gbp_shellcmd_application_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_APPLICATION_ADDIN, app_addin_iface_init))
 
 static void
diff --git a/src/plugins/shellcmd/gbp-shellcmd-command-editor.c 
b/src/plugins/shellcmd/gbp-shellcmd-command-editor.c
index be3c82781..e0f29da6a 100644
--- a/src/plugins/shellcmd/gbp-shellcmd-command-editor.c
+++ b/src/plugins/shellcmd/gbp-shellcmd-command-editor.c
@@ -49,7 +49,7 @@ struct _GbpShellcmdCommandEditor
   GtkSwitch            *close_on_exit;
 };
 
-G_DEFINE_TYPE (GbpShellcmdCommandEditor, gbp_shellcmd_command_editor, GTK_TYPE_BIN)
+G_DEFINE_FINAL_TYPE (GbpShellcmdCommandEditor, gbp_shellcmd_command_editor, GTK_TYPE_BIN)
 
 static GbpShellcmdCommandModel *
 get_model (void)
diff --git a/src/plugins/shellcmd/gbp-shellcmd-command-model.c 
b/src/plugins/shellcmd/gbp-shellcmd-command-model.c
index 8c742dca0..00b849aec 100644
--- a/src/plugins/shellcmd/gbp-shellcmd-command-model.c
+++ b/src/plugins/shellcmd/gbp-shellcmd-command-model.c
@@ -44,7 +44,7 @@ struct _GbpShellcmdCommandModel
 
 static void list_model_iface_init (GListModelInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (GbpShellcmdCommandModel, gbp_shellcmd_command_model, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpShellcmdCommandModel, gbp_shellcmd_command_model, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, list_model_iface_init))
 
 enum {
diff --git a/src/plugins/shellcmd/gbp-shellcmd-command-provider.c 
b/src/plugins/shellcmd/gbp-shellcmd-command-provider.c
index e73508ca0..504401f69 100644
--- a/src/plugins/shellcmd/gbp-shellcmd-command-provider.c
+++ b/src/plugins/shellcmd/gbp-shellcmd-command-provider.c
@@ -272,7 +272,7 @@ command_provider_iface_init (IdeCommandProviderInterface *iface)
   iface->get_command_by_id = gbp_shellcmd_command_provider_get_command_by_id;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpShellcmdCommandProvider, gbp_shellcmd_command_provider, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpShellcmdCommandProvider, gbp_shellcmd_command_provider, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_COMMAND_PROVIDER,
                                                 command_provider_iface_init))
 
diff --git a/src/plugins/shellcmd/gbp-shellcmd-command-row.c b/src/plugins/shellcmd/gbp-shellcmd-command-row.c
index fd125c80e..cfd610ea9 100644
--- a/src/plugins/shellcmd/gbp-shellcmd-command-row.c
+++ b/src/plugins/shellcmd/gbp-shellcmd-command-row.c
@@ -35,7 +35,7 @@ struct _GbpShellcmdCommandRow
   DzlShortcutLabel   *chord;
 };
 
-G_DEFINE_TYPE (GbpShellcmdCommandRow, gbp_shellcmd_command_row, GTK_TYPE_LIST_BOX_ROW)
+G_DEFINE_FINAL_TYPE (GbpShellcmdCommandRow, gbp_shellcmd_command_row, GTK_TYPE_LIST_BOX_ROW)
 
 static void
 gbp_shellcmd_command_row_finalize (GObject *object)
diff --git a/src/plugins/shellcmd/gbp-shellcmd-command.c b/src/plugins/shellcmd/gbp-shellcmd-command.c
index 3475401e2..fe5bc884e 100644
--- a/src/plugins/shellcmd/gbp-shellcmd-command.c
+++ b/src/plugins/shellcmd/gbp-shellcmd-command.c
@@ -73,7 +73,7 @@ enum {
 
 static void command_iface_init (IdeCommandInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (GbpShellcmdCommand, gbp_shellcmd_command, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpShellcmdCommand, gbp_shellcmd_command, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_COMMAND, command_iface_init))
 
 static GParamSpec *properties [N_PROPS];
diff --git a/src/plugins/shellcmd/gbp-shellcmd-list.c b/src/plugins/shellcmd/gbp-shellcmd-list.c
index d702eafec..87fd81214 100644
--- a/src/plugins/shellcmd/gbp-shellcmd-list.c
+++ b/src/plugins/shellcmd/gbp-shellcmd-list.c
@@ -46,7 +46,7 @@ enum {
 
 static guint signals [N_SIGNALS];
 
-G_DEFINE_TYPE (GbpShellcmdList, gbp_shellcmd_list, GTK_TYPE_FRAME)
+G_DEFINE_FINAL_TYPE (GbpShellcmdList, gbp_shellcmd_list, GTK_TYPE_FRAME)
 
 static void
 gbp_shellcmd_list_class_init (GbpShellcmdListClass *klass)
diff --git a/src/plugins/shellcmd/gbp-shellcmd-preferences-addin.c 
b/src/plugins/shellcmd/gbp-shellcmd-preferences-addin.c
index a8d8d9864..c695ed217 100644
--- a/src/plugins/shellcmd/gbp-shellcmd-preferences-addin.c
+++ b/src/plugins/shellcmd/gbp-shellcmd-preferences-addin.c
@@ -137,7 +137,7 @@ preferences_addin_iface_init (IdePreferencesAddinInterface *iface)
   iface->unload = gbp_shellcmd_preferences_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpShellcmdPreferencesAddin, gbp_shellcmd_preferences_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpShellcmdPreferencesAddin, gbp_shellcmd_preferences_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_PREFERENCES_ADDIN, preferences_addin_iface_init))
 
 static void
diff --git a/src/plugins/snippets/ide-snippet-completion-item.c 
b/src/plugins/snippets/ide-snippet-completion-item.c
index 6beab904a..43d074d72 100644
--- a/src/plugins/snippets/ide-snippet-completion-item.c
+++ b/src/plugins/snippets/ide-snippet-completion-item.c
@@ -33,7 +33,7 @@ struct _IdeSnippetCompletionItem
   const IdeSnippetInfo *info;
 };
 
-G_DEFINE_TYPE_WITH_CODE (IdeSnippetCompletionItem, ide_snippet_completion_item, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeSnippetCompletionItem, ide_snippet_completion_item, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_COMPLETION_PROPOSAL, NULL))
 
 static void
diff --git a/src/plugins/snippets/ide-snippet-completion-provider.c 
b/src/plugins/snippets/ide-snippet-completion-provider.c
index 34b684efa..ae2c34755 100644
--- a/src/plugins/snippets/ide-snippet-completion-provider.c
+++ b/src/plugins/snippets/ide-snippet-completion-provider.c
@@ -34,7 +34,7 @@ struct _IdeSnippetCompletionProvider
 
 static void provider_iface_init (IdeCompletionProviderInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IdeSnippetCompletionProvider,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeSnippetCompletionProvider,
                          ide_snippet_completion_provider,
                          IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_COMPLETION_PROVIDER, provider_iface_init))
diff --git a/src/plugins/snippets/ide-snippet-model.c b/src/plugins/snippets/ide-snippet-model.c
index 9f167c3e1..b515c6944 100644
--- a/src/plugins/snippets/ide-snippet-model.c
+++ b/src/plugins/snippets/ide-snippet-model.c
@@ -36,7 +36,7 @@ struct _IdeSnippetModel
 
 static void list_model_iface_init (GListModelInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IdeSnippetModel, ide_snippet_model, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeSnippetModel, ide_snippet_model, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, list_model_iface_init))
 
 static void
diff --git a/src/plugins/snippets/ide-snippet-preferences-addin.c 
b/src/plugins/snippets/ide-snippet-preferences-addin.c
index c10a0c23d..ef5e97861 100644
--- a/src/plugins/snippets/ide-snippet-preferences-addin.c
+++ b/src/plugins/snippets/ide-snippet-preferences-addin.c
@@ -75,7 +75,7 @@ prefs_addin_iface_init (IdePreferencesAddinInterface *iface)
   iface->unload = ide_snippet_preferences_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (IdeSnippetPreferencesAddin, ide_snippet_preferences_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeSnippetPreferencesAddin, ide_snippet_preferences_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_PREFERENCES_ADDIN, prefs_addin_iface_init))
 
 static void
diff --git a/src/plugins/snippets/snippets/gobject.snippets b/src/plugins/snippets/snippets/gobject.snippets
index 84c22fa71..d736a7b43 100644
--- a/src/plugins/snippets/snippets/gobject.snippets
+++ b/src/plugins/snippets/snippets/gobject.snippets
@@ -8,7 +8,7 @@ snippet gobject
                $0
        } ${2:$1|camelize}Private;
 
-       G_DEFINE_TYPE_WITH_PRIVATE ($2, ${3:$1|functify}, ${4:G_TYPE_OBJECT})
+       G_DEFINE_FINAL_TYPE_WITH_PRIVATE ($2, ${3:$1|functify}, ${4:G_TYPE_OBJECT})
 
        enum {
                PROP_0,
@@ -138,7 +138,7 @@ snippet gobject_final
                ${4:GObject} parent_instance;
        };
 
-       G_DEFINE_TYPE ($2, ${3:$1|functify}, ${$4|namespace|functify|upper}_TYPE_${$4|class|functify|upper})
+       G_DEFINE_FINAL_TYPE ($2, ${3:$1|functify}, 
${$4|namespace|functify|upper}_TYPE_${$4|class|functify|upper})
 
        enum {
                PROP_0,
diff --git a/src/plugins/spellcheck/gbp-spell-buffer-addin.c b/src/plugins/spellcheck/gbp-spell-buffer-addin.c
index c5a8bb6e7..aec9d3d3e 100644
--- a/src/plugins/spellcheck/gbp-spell-buffer-addin.c
+++ b/src/plugins/spellcheck/gbp-spell-buffer-addin.c
@@ -175,7 +175,7 @@ buffer_addin_iface_init (IdeBufferAddinInterface *iface)
   iface->unload = gbp_spell_buffer_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpSpellBufferAddin, gbp_spell_buffer_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpSpellBufferAddin, gbp_spell_buffer_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_BUFFER_ADDIN, buffer_addin_iface_init))
 
 static GParamSpec *properties [N_PROPS];
diff --git a/src/plugins/spellcheck/gbp-spell-dict.c b/src/plugins/spellcheck/gbp-spell-dict.c
index 7b2d09d42..18700da02 100644
--- a/src/plugins/spellcheck/gbp-spell-dict.c
+++ b/src/plugins/spellcheck/gbp-spell-dict.c
@@ -47,7 +47,7 @@ struct _GbpSpellDict
   guint                 update_needed : 1;
 };
 
-G_DEFINE_TYPE (GbpSpellDict, gbp_spell_dict, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (GbpSpellDict, gbp_spell_dict, G_TYPE_OBJECT)
 
 enum {
   PROP_0,
diff --git a/src/plugins/spellcheck/gbp-spell-editor-addin.c b/src/plugins/spellcheck/gbp-spell-editor-addin.c
index 8e0ef541b..b9c3f6e51 100644
--- a/src/plugins/spellcheck/gbp-spell-editor-addin.c
+++ b/src/plugins/spellcheck/gbp-spell-editor-addin.c
@@ -128,7 +128,7 @@ editor_addin_iface_init (IdeEditorAddinInterface *iface)
   iface->page_set = gbp_spell_editor_addin_page_set;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpSpellEditorAddin, gbp_spell_editor_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpSpellEditorAddin, gbp_spell_editor_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_EDITOR_ADDIN, editor_addin_iface_init))
 
 static void
diff --git a/src/plugins/spellcheck/gbp-spell-editor-page-addin.c 
b/src/plugins/spellcheck/gbp-spell-editor-page-addin.c
index cb62be4f5..2362c79b5 100644
--- a/src/plugins/spellcheck/gbp-spell-editor-page-addin.c
+++ b/src/plugins/spellcheck/gbp-spell-editor-page-addin.c
@@ -203,7 +203,7 @@ editor_page_addin_iface_init (IdeEditorPageAddinInterface *iface)
   iface->unload = gbp_spell_editor_page_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpSpellEditorPageAddin, gbp_spell_editor_page_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpSpellEditorPageAddin, gbp_spell_editor_page_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_EDITOR_PAGE_ADDIN, editor_page_addin_iface_init))
 
 static void
diff --git a/src/plugins/spellcheck/gbp-spell-language-popover.c 
b/src/plugins/spellcheck/gbp-spell-language-popover.c
index 32a83bf69..deef64209 100644
--- a/src/plugins/spellcheck/gbp-spell-language-popover.c
+++ b/src/plugins/spellcheck/gbp-spell-language-popover.c
@@ -46,7 +46,7 @@ struct _GbpSpellLanguagePopover
 
 static void language_chooser_iface_init (GspellLanguageChooserInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (GbpSpellLanguagePopover, gbp_spell_language_popover, GTK_TYPE_BUTTON,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpSpellLanguagePopover, gbp_spell_language_popover, GTK_TYPE_BUTTON,
                          G_IMPLEMENT_INTERFACE (GSPELL_TYPE_LANGUAGE_CHOOSER, language_chooser_iface_init))
 
 enum {
diff --git a/src/plugins/spellcheck/gbp-spell-navigator.c b/src/plugins/spellcheck/gbp-spell-navigator.c
index bf9bb80f9..0cfffb264 100644
--- a/src/plugins/spellcheck/gbp-spell-navigator.c
+++ b/src/plugins/spellcheck/gbp-spell-navigator.c
@@ -48,7 +48,7 @@ struct _GbpSpellNavigator
 
 static void gspell_navigator_iface_init (GspellNavigatorInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (GbpSpellNavigator, gbp_spell_navigator, G_TYPE_INITIALLY_UNOWNED,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpSpellNavigator, gbp_spell_navigator, G_TYPE_INITIALLY_UNOWNED,
                          G_IMPLEMENT_INTERFACE (GSPELL_TYPE_NAVIGATOR, gspell_navigator_iface_init))
 
 enum {
diff --git a/src/plugins/spellcheck/gbp-spell-widget.c b/src/plugins/spellcheck/gbp-spell-widget.c
index 117bec728..efa858a6f 100644
--- a/src/plugins/spellcheck/gbp-spell-widget.c
+++ b/src/plugins/spellcheck/gbp-spell-widget.c
@@ -31,7 +31,7 @@
 #include "gbp-spell-private.h"
 #include "gbp-spell-widget.h"
 
-G_DEFINE_TYPE (GbpSpellWidget, gbp_spell_widget, GTK_TYPE_BIN)
+G_DEFINE_FINAL_TYPE (GbpSpellWidget, gbp_spell_widget, GTK_TYPE_BIN)
 
 #define CHECK_WORD_INTERVAL_MIN      100
 #define DICT_CHECK_WORD_INTERVAL_MIN 100
diff --git a/src/plugins/sublime/gbp-sublime-preferences-addin.c 
b/src/plugins/sublime/gbp-sublime-preferences-addin.c
index c99435ae7..843a2df34 100644
--- a/src/plugins/sublime/gbp-sublime-preferences-addin.c
+++ b/src/plugins/sublime/gbp-sublime-preferences-addin.c
@@ -74,7 +74,7 @@ preferences_addin_iface_init (IdePreferencesAddinInterface *iface)
   iface->unload = gbp_sublime_preferences_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpSublimePreferencesAddin, gbp_sublime_preferences_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpSublimePreferencesAddin, gbp_sublime_preferences_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_PREFERENCES_ADDIN,
                                                 preferences_addin_iface_init))
 
diff --git a/src/plugins/support/ide-support-application-addin.c 
b/src/plugins/support/ide-support-application-addin.c
index 436c175bf..1b11db2e3 100644
--- a/src/plugins/support/ide-support-application-addin.c
+++ b/src/plugins/support/ide-support-application-addin.c
@@ -34,7 +34,7 @@ static void application_addin_iface_init (IdeApplicationAddinInterface *iface);
 G_DEFINE_TYPE_EXTENDED (IdeSupportApplicationAddin,
                         ide_support_application_addin,
                         G_TYPE_OBJECT,
-                        0,
+                        G_TYPE_FLAG_FINAL,
                         G_IMPLEMENT_INTERFACE (IDE_TYPE_APPLICATION_ADDIN,
                                                application_addin_iface_init))
 
diff --git a/src/plugins/symbol-tree/gbp-symbol-frame-addin.c 
b/src/plugins/symbol-tree/gbp-symbol-frame-addin.c
index 87a92e550..a90de029e 100644
--- a/src/plugins/symbol-tree/gbp-symbol-frame-addin.c
+++ b/src/plugins/symbol-tree/gbp-symbol-frame-addin.c
@@ -553,7 +553,7 @@ frame_addin_iface_init (IdeFrameAddinInterface *iface)
   iface->set_page = gbp_symbol_frame_addin_set_page;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpSymbolFrameAddin,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpSymbolFrameAddin,
                          gbp_symbol_frame_addin,
                          G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_FRAME_ADDIN,
diff --git a/src/plugins/symbol-tree/gbp-symbol-hover-provider.c 
b/src/plugins/symbol-tree/gbp-symbol-hover-provider.c
index ff129b740..75f06c190 100644
--- a/src/plugins/symbol-tree/gbp-symbol-hover-provider.c
+++ b/src/plugins/symbol-tree/gbp-symbol-hover-provider.c
@@ -202,7 +202,7 @@ hover_provider_iface_init (IdeHoverProviderInterface *iface)
   iface->hover_finish = gbp_symbol_hover_provider_hover_finish;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpSymbolHoverProvider, gbp_symbol_hover_provider, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpSymbolHoverProvider, gbp_symbol_hover_provider, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_HOVER_PROVIDER, hover_provider_iface_init))
 
 static void
diff --git a/src/plugins/symbol-tree/gbp-symbol-menu-button.c 
b/src/plugins/symbol-tree/gbp-symbol-menu-button.c
index 7e3669ace..9ca767c47 100644
--- a/src/plugins/symbol-tree/gbp-symbol-menu-button.c
+++ b/src/plugins/symbol-tree/gbp-symbol-menu-button.c
@@ -48,7 +48,7 @@ enum {
   N_PROPS
 };
 
-G_DEFINE_TYPE (GbpSymbolMenuButton, gbp_symbol_menu_button, GTK_TYPE_MENU_BUTTON)
+G_DEFINE_FINAL_TYPE (GbpSymbolMenuButton, gbp_symbol_menu_button, GTK_TYPE_MENU_BUTTON)
 
 static GParamSpec *properties [N_PROPS];
 
diff --git a/src/plugins/symbol-tree/gbp-symbol-tree-builder.c 
b/src/plugins/symbol-tree/gbp-symbol-tree-builder.c
index e724f7f39..4f51de9be 100644
--- a/src/plugins/symbol-tree/gbp-symbol-tree-builder.c
+++ b/src/plugins/symbol-tree/gbp-symbol-tree-builder.c
@@ -32,7 +32,7 @@ struct _GbpSymbolTreeBuilder
   gchar *filter;
 };
 
-G_DEFINE_TYPE (GbpSymbolTreeBuilder, gbp_symbol_tree_builder, DZL_TYPE_TREE_BUILDER)
+G_DEFINE_FINAL_TYPE (GbpSymbolTreeBuilder, gbp_symbol_tree_builder, DZL_TYPE_TREE_BUILDER)
 
 static void
 gbp_symbol_tree_builder_build_children (DzlTreeBuilder *builder,
diff --git a/src/plugins/sysprof/gbp-sysprof-surface.c b/src/plugins/sysprof/gbp-sysprof-surface.c
index b93898011..100f78bd6 100644
--- a/src/plugins/sysprof/gbp-sysprof-surface.c
+++ b/src/plugins/sysprof/gbp-sysprof-surface.c
@@ -31,7 +31,7 @@ struct _GbpSysprofSurface
   SysprofNotebook *notebook;
 };
 
-G_DEFINE_TYPE (GbpSysprofSurface, gbp_sysprof_surface, IDE_TYPE_SURFACE)
+G_DEFINE_FINAL_TYPE (GbpSysprofSurface, gbp_sysprof_surface, IDE_TYPE_SURFACE)
 
 static void
 gbp_sysprof_surface_class_init (GbpSysprofSurfaceClass *klass)
diff --git a/src/plugins/sysprof/gbp-sysprof-workspace-addin.c 
b/src/plugins/sysprof/gbp-sysprof-workspace-addin.c
index 331f811bc..eb12f5e0f 100644
--- a/src/plugins/sysprof/gbp-sysprof-workspace-addin.c
+++ b/src/plugins/sysprof/gbp-sysprof-workspace-addin.c
@@ -41,7 +41,7 @@ struct _GbpSysprofWorkspaceAddin
 
 static void workspace_addin_iface_init (IdeWorkspaceAddinInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (GbpSysprofWorkspaceAddin, gbp_sysprof_workspace_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpSysprofWorkspaceAddin, gbp_sysprof_workspace_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_WORKSPACE_ADDIN, workspace_addin_iface_init))
 
 static void
diff --git a/src/plugins/sysroot/gbp-sysroot-manager.c b/src/plugins/sysroot/gbp-sysroot-manager.c
index eeb0d90ce..d60192382 100644
--- a/src/plugins/sysroot/gbp-sysroot-manager.c
+++ b/src/plugins/sysroot/gbp-sysroot-manager.c
@@ -30,7 +30,7 @@ struct _GbpSysrootManager
   GKeyFile *key_file;
 };
 
-G_DEFINE_TYPE (GbpSysrootManager, gbp_sysroot_manager, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (GbpSysrootManager, gbp_sysroot_manager, G_TYPE_OBJECT)
 
 enum {
   TARGET_MODIFIED,
diff --git a/src/plugins/sysroot/gbp-sysroot-preferences-addin.c 
b/src/plugins/sysroot/gbp-sysroot-preferences-addin.c
index 6e27005e6..d96ce7a5b 100644
--- a/src/plugins/sysroot/gbp-sysroot-preferences-addin.c
+++ b/src/plugins/sysroot/gbp-sysroot-preferences-addin.c
@@ -194,7 +194,7 @@ preferences_addin_iface_init (IdePreferencesAddinInterface *iface)
   iface->unload = gbp_sysroot_preferences_addin_unload;
 }
 
-G_DEFINE_TYPE_EXTENDED (GbpSysrootPreferencesAddin, gbp_sysroot_preferences_addin, G_TYPE_OBJECT, 0,
+G_DEFINE_TYPE_EXTENDED (GbpSysrootPreferencesAddin, gbp_sysroot_preferences_addin, G_TYPE_OBJECT, 
G_TYPE_FLAG_FINAL,
                         G_IMPLEMENT_INTERFACE (IDE_TYPE_PREFERENCES_ADDIN, preferences_addin_iface_init))
 
 static void
diff --git a/src/plugins/sysroot/gbp-sysroot-preferences-row.c 
b/src/plugins/sysroot/gbp-sysroot-preferences-row.c
index 778ddcbce..75f74f801 100644
--- a/src/plugins/sysroot/gbp-sysroot-preferences-row.c
+++ b/src/plugins/sysroot/gbp-sysroot-preferences-row.c
@@ -37,7 +37,7 @@ struct _GbpSysrootPreferencesRow
   GtkWidget *popover;
 };
 
-G_DEFINE_TYPE (GbpSysrootPreferencesRow, gbp_sysroot_preferences_row, DZL_TYPE_PREFERENCES_BIN)
+G_DEFINE_FINAL_TYPE (GbpSysrootPreferencesRow, gbp_sysroot_preferences_row, DZL_TYPE_PREFERENCES_BIN)
 
 enum {
   PROP_0,
diff --git a/src/plugins/sysroot/gbp-sysroot-runtime-provider.c 
b/src/plugins/sysroot/gbp-sysroot-runtime-provider.c
index 8a30570ea..2c444f86c 100644
--- a/src/plugins/sysroot/gbp-sysroot-runtime-provider.c
+++ b/src/plugins/sysroot/gbp-sysroot-runtime-provider.c
@@ -40,7 +40,7 @@ static void runtime_provider_iface_init (IdeRuntimeProviderInterface *iface);
 G_DEFINE_TYPE_EXTENDED (GbpSysrootRuntimeProvider,
                         gbp_sysroot_runtime_provider,
                         IDE_TYPE_OBJECT,
-                        0,
+                        G_TYPE_FLAG_FINAL,
                         G_IMPLEMENT_INTERFACE (IDE_TYPE_RUNTIME_PROVIDER,
                                                runtime_provider_iface_init))
 
diff --git a/src/plugins/sysroot/gbp-sysroot-runtime.c b/src/plugins/sysroot/gbp-sysroot-runtime.c
index 86bf89eaa..cc5307bd4 100644
--- a/src/plugins/sysroot/gbp-sysroot-runtime.c
+++ b/src/plugins/sysroot/gbp-sysroot-runtime.c
@@ -35,7 +35,7 @@ struct _GbpSysrootRuntime
   IdeRuntime  parent_instance;
 };
 
-G_DEFINE_TYPE (GbpSysrootRuntime, gbp_sysroot_runtime, IDE_TYPE_RUNTIME)
+G_DEFINE_FINAL_TYPE (GbpSysrootRuntime, gbp_sysroot_runtime, IDE_TYPE_RUNTIME)
 
 GbpSysrootRuntime *
 gbp_sysroot_runtime_new (const gchar *sysroot_id)
diff --git a/src/plugins/sysroot/gbp-sysroot-subprocess-launcher.c 
b/src/plugins/sysroot/gbp-sysroot-subprocess-launcher.c
index 4d0e23a58..0006247ff 100644
--- a/src/plugins/sysroot/gbp-sysroot-subprocess-launcher.c
+++ b/src/plugins/sysroot/gbp-sysroot-subprocess-launcher.c
@@ -30,7 +30,7 @@ struct _GbpSysrootSubprocessLauncher
   IdeSubprocessLauncher parent_instance;
 };
 
-G_DEFINE_TYPE (GbpSysrootSubprocessLauncher,
+G_DEFINE_FINAL_TYPE (GbpSysrootSubprocessLauncher,
                gbp_sysroot_subprocess_launcher,
                IDE_TYPE_SUBPROCESS_LAUNCHER)
 
diff --git a/src/plugins/sysroot/gbp-sysroot-toolchain-provider.c 
b/src/plugins/sysroot/gbp-sysroot-toolchain-provider.c
index c21112879..3c858564b 100644
--- a/src/plugins/sysroot/gbp-sysroot-toolchain-provider.c
+++ b/src/plugins/sysroot/gbp-sysroot-toolchain-provider.c
@@ -300,7 +300,7 @@ toolchain_provider_iface_init (IdeToolchainProviderInterface *iface)
   iface->unload = gbp_sysroot_toolchain_provider_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpSysrootToolchainProvider,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpSysrootToolchainProvider,
                          gbp_sysroot_toolchain_provider,
                          IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_TOOLCHAIN_PROVIDER,
diff --git a/src/plugins/terminal/gbp-terminal-application-addin.c 
b/src/plugins/terminal/gbp-terminal-application-addin.c
index 8099b94e7..5a12e6df8 100644
--- a/src/plugins/terminal/gbp-terminal-application-addin.c
+++ b/src/plugins/terminal/gbp-terminal-application-addin.c
@@ -106,7 +106,7 @@ application_addin_iface_init (IdeApplicationAddinInterface *iface)
   iface->handle_command_line = gbp_terminal_application_addin_handle_command_line;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpTerminalApplicationAddin, gbp_terminal_application_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpTerminalApplicationAddin, gbp_terminal_application_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_APPLICATION_ADDIN,
                                                 application_addin_iface_init))
 
diff --git a/src/plugins/terminal/gbp-terminal-preferences-addin.c 
b/src/plugins/terminal/gbp-terminal-preferences-addin.c
index c1bf5d439..6e387f0e3 100644
--- a/src/plugins/terminal/gbp-terminal-preferences-addin.c
+++ b/src/plugins/terminal/gbp-terminal-preferences-addin.c
@@ -152,7 +152,7 @@ preferences_addin_iface_Init (IdePreferencesAddinInterface *iface)
   iface->unload = gbp_terminal_preferences_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpTerminalPreferencesAddin, gbp_terminal_preferences_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpTerminalPreferencesAddin, gbp_terminal_preferences_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_PREFERENCES_ADDIN,
                                                 preferences_addin_iface_Init))
 
diff --git a/src/plugins/terminal/gbp-terminal-workspace-addin.c 
b/src/plugins/terminal/gbp-terminal-workspace-addin.c
index 38f9bd728..8b8cc1e48 100644
--- a/src/plugins/terminal/gbp-terminal-workspace-addin.c
+++ b/src/plugins/terminal/gbp-terminal-workspace-addin.c
@@ -585,7 +585,7 @@ workspace_addin_iface_init (IdeWorkspaceAddinInterface *iface)
   iface->unload = gbp_terminal_workspace_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpTerminalWorkspaceAddin, gbp_terminal_workspace_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpTerminalWorkspaceAddin, gbp_terminal_workspace_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_WORKSPACE_ADDIN, workspace_addin_iface_init))
 
 static void
diff --git a/src/plugins/testui/gbp-test-output-panel.c b/src/plugins/testui/gbp-test-output-panel.c
index 5896a835a..4b3c91a3d 100644
--- a/src/plugins/testui/gbp-test-output-panel.c
+++ b/src/plugins/testui/gbp-test-output-panel.c
@@ -34,7 +34,7 @@ struct _GbpTestOutputPanel
   GtkScrollbar *scrollbar;
 };
 
-G_DEFINE_TYPE (GbpTestOutputPanel, gbp_test_output_panel, IDE_TYPE_PANE)
+G_DEFINE_FINAL_TYPE (GbpTestOutputPanel, gbp_test_output_panel, IDE_TYPE_PANE)
 
 static void
 gbp_test_output_panel_class_init (GbpTestOutputPanelClass *klass)
diff --git a/src/plugins/testui/gbp-test-path.c b/src/plugins/testui/gbp-test-path.c
index e9d97eb39..dcb2030dc 100644
--- a/src/plugins/testui/gbp-test-path.c
+++ b/src/plugins/testui/gbp-test-path.c
@@ -39,7 +39,7 @@ enum {
   N_PROPS
 };
 
-G_DEFINE_TYPE (GbpTestPath, gbp_test_path, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (GbpTestPath, gbp_test_path, G_TYPE_OBJECT)
 
 static GParamSpec *properties [N_PROPS];
 
diff --git a/src/plugins/testui/gbp-test-tree-addin.c b/src/plugins/testui/gbp-test-tree-addin.c
index 54b9e7fa3..646a9489b 100644
--- a/src/plugins/testui/gbp-test-tree-addin.c
+++ b/src/plugins/testui/gbp-test-tree-addin.c
@@ -438,7 +438,7 @@ tree_addin_iface_init (IdeTreeAddinInterface *iface)
   iface->node_activated = gbp_test_tree_addin_node_activated;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpTestTreeAddin, gbp_test_tree_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpTestTreeAddin, gbp_test_tree_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_TREE_ADDIN, tree_addin_iface_init))
 
 static void
diff --git a/src/plugins/todo/gbp-todo-item.c b/src/plugins/todo/gbp-todo-item.c
index 8ebfead37..6ad8922bf 100644
--- a/src/plugins/todo/gbp-todo-item.c
+++ b/src/plugins/todo/gbp-todo-item.c
@@ -33,7 +33,7 @@ struct _GbpTodoItem
   const gchar *lines[MAX_TODO_LINES];
 };
 
-G_DEFINE_TYPE (GbpTodoItem, gbp_todo_item, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (GbpTodoItem, gbp_todo_item, G_TYPE_OBJECT)
 
 static void
 gbp_todo_item_finalize (GObject *object)
diff --git a/src/plugins/todo/gbp-todo-model.c b/src/plugins/todo/gbp-todo-model.c
index 851722d97..e6ca73572 100644
--- a/src/plugins/todo/gbp-todo-model.c
+++ b/src/plugins/todo/gbp-todo-model.c
@@ -57,7 +57,7 @@ typedef struct
   GPtrArray    *items;
 } ResultInfo;
 
-G_DEFINE_TYPE (GbpTodoModel, gbp_todo_model, GTK_TYPE_LIST_STORE)
+G_DEFINE_FINAL_TYPE (GbpTodoModel, gbp_todo_model, GTK_TYPE_LIST_STORE)
 
 enum {
   PROP_0,
diff --git a/src/plugins/todo/gbp-todo-panel.c b/src/plugins/todo/gbp-todo-panel.c
index bd15a0ee8..09b02e889 100644
--- a/src/plugins/todo/gbp-todo-panel.c
+++ b/src/plugins/todo/gbp-todo-panel.c
@@ -37,7 +37,7 @@ struct _GbpTodoPanel
   GtkStack      *stack;
 };
 
-G_DEFINE_TYPE (GbpTodoPanel, gbp_todo_panel, DZL_TYPE_DOCK_WIDGET)
+G_DEFINE_FINAL_TYPE (GbpTodoPanel, gbp_todo_panel, DZL_TYPE_DOCK_WIDGET)
 
 enum {
   PROP_0,
diff --git a/src/plugins/todo/gbp-todo-workspace-addin.c b/src/plugins/todo/gbp-todo-workspace-addin.c
index 3931eeffd..26e5be2fc 100644
--- a/src/plugins/todo/gbp-todo-workspace-addin.c
+++ b/src/plugins/todo/gbp-todo-workspace-addin.c
@@ -198,7 +198,7 @@ workspace_addin_iface_init (IdeWorkspaceAddinInterface *iface)
   iface->unload = gbp_todo_workspace_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpTodoWorkspaceAddin, gbp_todo_workspace_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpTodoWorkspaceAddin, gbp_todo_workspace_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_WORKSPACE_ADDIN,
                                                 workspace_addin_iface_init))
 
diff --git a/src/plugins/trim-spaces/gbp-trim-spaces-buffer-addin.c 
b/src/plugins/trim-spaces/gbp-trim-spaces-buffer-addin.c
index b34030f87..db7264da0 100644
--- a/src/plugins/trim-spaces/gbp-trim-spaces-buffer-addin.c
+++ b/src/plugins/trim-spaces/gbp-trim-spaces-buffer-addin.c
@@ -131,7 +131,7 @@ buffer_addin_iface_init (IdeBufferAddinInterface *iface)
   iface->save_file = gbp_trim_spaces_buffer_addin_save_file;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpTrimSpacesBufferAddin, gbp_trim_spaces_buffer_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpTrimSpacesBufferAddin, gbp_trim_spaces_buffer_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_BUFFER_ADDIN, buffer_addin_iface_init))
 
 static void
diff --git a/src/plugins/update-manager/gbp-update-manager-app-addin.c 
b/src/plugins/update-manager/gbp-update-manager-app-addin.c
index 7717d50ac..df7a069a3 100644
--- a/src/plugins/update-manager/gbp-update-manager-app-addin.c
+++ b/src/plugins/update-manager/gbp-update-manager-app-addin.c
@@ -304,7 +304,7 @@ app_addin_iface_init (IdeApplicationAddinInterface *iface)
   iface->unload = gbp_update_manager_app_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpUpdateManagerAppAddin, gbp_update_manager_app_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpUpdateManagerAppAddin, gbp_update_manager_app_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_APPLICATION_ADDIN, app_addin_iface_init))
 
 static void
diff --git a/src/plugins/vagrant/gbp-vagrant-runtime-provider.c 
b/src/plugins/vagrant/gbp-vagrant-runtime-provider.c
index 4e610ea65..684573d2f 100644
--- a/src/plugins/vagrant/gbp-vagrant-runtime-provider.c
+++ b/src/plugins/vagrant/gbp-vagrant-runtime-provider.c
@@ -286,7 +286,7 @@ runtime_provider_iface_init (IdeRuntimeProviderInterface *iface)
   iface->load = gbp_vagrant_runtime_provider_load;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpVagrantRuntimeProvider, gbp_vagrant_runtime_provider, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpVagrantRuntimeProvider, gbp_vagrant_runtime_provider, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_RUNTIME_PROVIDER, runtime_provider_iface_init))
 
 static void
diff --git a/src/plugins/vagrant/gbp-vagrant-runtime.c b/src/plugins/vagrant/gbp-vagrant-runtime.c
index 2ace23696..f9bd5e59a 100644
--- a/src/plugins/vagrant/gbp-vagrant-runtime.c
+++ b/src/plugins/vagrant/gbp-vagrant-runtime.c
@@ -41,7 +41,7 @@ enum {
   N_PROPS
 };
 
-G_DEFINE_TYPE (GbpVagrantRuntime, gbp_vagrant_runtime, IDE_TYPE_RUNTIME)
+G_DEFINE_FINAL_TYPE (GbpVagrantRuntime, gbp_vagrant_runtime, IDE_TYPE_RUNTIME)
 
 static GParamSpec *properties [N_PROPS];
 
diff --git a/src/plugins/vagrant/gbp-vagrant-subprocess-launcher.c 
b/src/plugins/vagrant/gbp-vagrant-subprocess-launcher.c
index da39d4460..dce272e4f 100644
--- a/src/plugins/vagrant/gbp-vagrant-subprocess-launcher.c
+++ b/src/plugins/vagrant/gbp-vagrant-subprocess-launcher.c
@@ -30,7 +30,7 @@ struct _GbpVagrantSubprocessLauncher
   gchar *dir;
 };
 
-G_DEFINE_TYPE (GbpVagrantSubprocessLauncher, gbp_vagrant_subprocess_launcher, IDE_TYPE_SUBPROCESS_LAUNCHER)
+G_DEFINE_FINAL_TYPE (GbpVagrantSubprocessLauncher, gbp_vagrant_subprocess_launcher, 
IDE_TYPE_SUBPROCESS_LAUNCHER)
 
 static IdeSubprocess *
 gbp_vagrant_subprocess_launcher_spawn (IdeSubprocessLauncher  *launcher,
diff --git a/src/plugins/vcsui/gbp-vcsui-editor-page-addin.c b/src/plugins/vcsui/gbp-vcsui-editor-page-addin.c
index f952b7582..e08d57826 100644
--- a/src/plugins/vcsui/gbp-vcsui-editor-page-addin.c
+++ b/src/plugins/vcsui/gbp-vcsui-editor-page-addin.c
@@ -123,7 +123,7 @@ editor_page_addin_iface_init (IdeEditorPageAddinInterface *iface)
   iface->unload = gbp_vcsui_editor_page_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpVcsuiEditorPageAddin, gbp_vcsui_editor_page_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpVcsuiEditorPageAddin, gbp_vcsui_editor_page_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_EDITOR_PAGE_ADDIN, editor_page_addin_iface_init))
 
 static void
diff --git a/src/plugins/vcsui/gbp-vcsui-tree-addin.c b/src/plugins/vcsui/gbp-vcsui-tree-addin.c
index e5b051ed8..9b8adac71 100644
--- a/src/plugins/vcsui/gbp-vcsui-tree-addin.c
+++ b/src/plugins/vcsui/gbp-vcsui-tree-addin.c
@@ -460,7 +460,7 @@ tree_addin_iface_init (IdeTreeAddinInterface *iface)
   iface->build_children_finish = gbp_vcsui_tree_addin_build_children_finish;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpVcsuiTreeAddin, gbp_vcsui_tree_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpVcsuiTreeAddin, gbp_vcsui_tree_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_TREE_ADDIN, tree_addin_iface_init))
 
 static void
diff --git a/src/plugins/vcsui/gbp-vcsui-workbench-addin.c b/src/plugins/vcsui/gbp-vcsui-workbench-addin.c
index 9e18159d9..6fa7e1cec 100644
--- a/src/plugins/vcsui/gbp-vcsui-workbench-addin.c
+++ b/src/plugins/vcsui/gbp-vcsui-workbench-addin.c
@@ -116,7 +116,7 @@ workbench_addin_iface_init (IdeWorkbenchAddinInterface *iface)
   iface->vcs_changed = gbp_vcsui_workbench_addin_vcs_changed;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpVcsuiWorkbenchAddin, gbp_vcsui_workbench_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpVcsuiWorkbenchAddin, gbp_vcsui_workbench_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_WORKBENCH_ADDIN, workbench_addin_iface_init))
 
 static void
diff --git a/src/plugins/vim/gbp-vim-command-provider.c b/src/plugins/vim/gbp-vim-command-provider.c
index 7a739b9aa..b70d4e6a1 100644
--- a/src/plugins/vim/gbp-vim-command-provider.c
+++ b/src/plugins/vim/gbp-vim-command-provider.c
@@ -107,7 +107,7 @@ command_provider_iface_init (IdeCommandProviderInterface *iface)
   iface->query_finish = gbp_vim_command_provider_query_finish;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpVimCommandProvider, gbp_vim_command_provider, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpVimCommandProvider, gbp_vim_command_provider, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_COMMAND_PROVIDER, command_provider_iface_init))
 
 static void
diff --git a/src/plugins/vim/gbp-vim-command.c b/src/plugins/vim/gbp-vim-command.c
index b68f02c98..e9e575d48 100644
--- a/src/plugins/vim/gbp-vim-command.c
+++ b/src/plugins/vim/gbp-vim-command.c
@@ -103,7 +103,7 @@ command_iface_init (IdeCommandInterface *iface)
   iface->get_priority = gbp_vim_command_get_priority;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpVimCommand, gbp_vim_command, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpVimCommand, gbp_vim_command, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_COMMAND, command_iface_init))
 
 static void
diff --git a/src/plugins/vim/gbp-vim-preferences-addin.c b/src/plugins/vim/gbp-vim-preferences-addin.c
index fcb4d238e..b29f090d8 100644
--- a/src/plugins/vim/gbp-vim-preferences-addin.c
+++ b/src/plugins/vim/gbp-vim-preferences-addin.c
@@ -74,7 +74,7 @@ preferences_addin_iface_init (IdePreferencesAddinInterface *iface)
   iface->unload = gbp_vim_preferences_addin_unload;
 }
 
-G_DEFINE_TYPE_WITH_CODE (GbpVimPreferencesAddin, gbp_vim_preferences_addin, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpVimPreferencesAddin, gbp_vim_preferences_addin, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_PREFERENCES_ADDIN,
                                                 preferences_addin_iface_init))
 
diff --git a/src/plugins/words/gbp-word-completion-provider.c 
b/src/plugins/words/gbp-word-completion-provider.c
index bf4c4b78c..947f3e78c 100644
--- a/src/plugins/words/gbp-word-completion-provider.c
+++ b/src/plugins/words/gbp-word-completion-provider.c
@@ -36,7 +36,7 @@ struct _GbpWordCompletionProvider
 
 static void completion_provider_iface_init (IdeCompletionProviderInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (GbpWordCompletionProvider, gbp_word_completion_provider, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpWordCompletionProvider, gbp_word_completion_provider, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_COMPLETION_PROVIDER, 
completion_provider_iface_init))
 
 static void
diff --git a/src/plugins/words/gbp-word-proposal.c b/src/plugins/words/gbp-word-proposal.c
index 8118e181c..f23195829 100644
--- a/src/plugins/words/gbp-word-proposal.c
+++ b/src/plugins/words/gbp-word-proposal.c
@@ -32,7 +32,7 @@ struct _GbpWordProposal
   gchar *word;
 };
 
-G_DEFINE_TYPE_WITH_CODE (GbpWordProposal, gbp_word_proposal, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpWordProposal, gbp_word_proposal, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_COMPLETION_PROPOSAL, NULL))
 
 static void
diff --git a/src/plugins/words/gbp-word-proposals.c b/src/plugins/words/gbp-word-proposals.c
index ab6226705..e927e43c9 100644
--- a/src/plugins/words/gbp-word-proposals.c
+++ b/src/plugins/words/gbp-word-proposals.c
@@ -82,7 +82,7 @@ typedef struct
 
 static void list_model_iface_init (GListModelInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (GbpWordProposals, gbp_word_proposals, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpWordProposals, gbp_word_proposals, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, list_model_iface_init))
 
 static void
diff --git a/src/plugins/xml-pack/ide-xml-completion-provider.c 
b/src/plugins/xml-pack/ide-xml-completion-provider.c
index b69005566..a09b53eb3 100644
--- a/src/plugins/xml-pack/ide-xml-completion-provider.c
+++ b/src/plugins/xml-pack/ide-xml-completion-provider.c
@@ -82,7 +82,7 @@ static void      completion_provider_init (IdeCompletionProviderInterface *iface
 static gboolean  process_matching_state   (MatchingState                  *state,
                                            IdeXmlRngDefine                *define);
 
-G_DEFINE_TYPE_WITH_CODE (IdeXmlCompletionProvider,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeXmlCompletionProvider,
                          ide_xml_completion_provider,
                          IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_COMPLETION_PROVIDER, completion_provider_init))
diff --git a/src/plugins/xml-pack/ide-xml-diagnostic-provider.c 
b/src/plugins/xml-pack/ide-xml-diagnostic-provider.c
index d2e90eee7..dab2ba88c 100644
--- a/src/plugins/xml-pack/ide-xml-diagnostic-provider.c
+++ b/src/plugins/xml-pack/ide-xml-diagnostic-provider.c
@@ -31,7 +31,7 @@ struct _IdeXmlDiagnosticProvider
 
 static void diagnostic_provider_iface_init (IdeDiagnosticProviderInterface *iface);
 
-G_DEFINE_TYPE_EXTENDED (IdeXmlDiagnosticProvider, ide_xml_diagnostic_provider, IDE_TYPE_OBJECT, 0,
+G_DEFINE_TYPE_EXTENDED (IdeXmlDiagnosticProvider, ide_xml_diagnostic_provider, IDE_TYPE_OBJECT, 
G_TYPE_FLAG_FINAL,
                         G_IMPLEMENT_INTERFACE (IDE_TYPE_DIAGNOSTIC_PROVIDER, diagnostic_provider_iface_init))
 
 static void
diff --git a/src/plugins/xml-pack/ide-xml-highlighter.c b/src/plugins/xml-pack/ide-xml-highlighter.c
index ccac8a686..b33b7b113 100644
--- a/src/plugins/xml-pack/ide-xml-highlighter.c
+++ b/src/plugins/xml-pack/ide-xml-highlighter.c
@@ -42,7 +42,7 @@ struct _IdeXmlHighlighter
 
 static void highlighter_iface_init (IdeHighlighterInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IdeXmlHighlighter,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeXmlHighlighter,
                          ide_xml_highlighter,
                          IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_HIGHLIGHTER, highlighter_iface_init))
diff --git a/src/plugins/xml-pack/ide-xml-indenter.c b/src/plugins/xml-pack/ide-xml-indenter.c
index fedb05ce8..0c65ca091 100644
--- a/src/plugins/xml-pack/ide-xml-indenter.c
+++ b/src/plugins/xml-pack/ide-xml-indenter.c
@@ -38,7 +38,7 @@ struct _IdeXmlIndenter
 
 static void indenter_iface_init (IdeIndenterInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IdeXmlIndenter, ide_xml_indenter, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeXmlIndenter, ide_xml_indenter, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_INDENTER, indenter_iface_init))
 
 static gunichar
diff --git a/src/plugins/xml-pack/ide-xml-parser.c b/src/plugins/xml-pack/ide-xml-parser.c
index 55313764b..164dc0160 100644
--- a/src/plugins/xml-pack/ide-xml-parser.c
+++ b/src/plugins/xml-pack/ide-xml-parser.c
@@ -40,7 +40,7 @@ typedef struct _ColorTag
   gchar *bg;
 } ColorTag;
 
-G_DEFINE_TYPE (IdeXmlParser, ide_xml_parser, IDE_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeXmlParser, ide_xml_parser, IDE_TYPE_OBJECT)
 
 static void
 color_tag_free (gpointer *data)
diff --git a/src/plugins/xml-pack/ide-xml-proposal.c b/src/plugins/xml-pack/ide-xml-proposal.c
index 2814bdc25..74a1eb808 100644
--- a/src/plugins/xml-pack/ide-xml-proposal.c
+++ b/src/plugins/xml-pack/ide-xml-proposal.c
@@ -33,7 +33,7 @@ struct _IdeXmlProposal
   gchar *text;
 };
 
-G_DEFINE_TYPE_WITH_CODE (IdeXmlProposal, ide_xml_proposal, G_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeXmlProposal, ide_xml_proposal, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_COMPLETION_PROPOSAL, NULL))
 
 static void
diff --git a/src/plugins/xml-pack/ide-xml-rng-parser.c b/src/plugins/xml-pack/ide-xml-rng-parser.c
index 150178b66..30f80b97a 100644
--- a/src/plugins/xml-pack/ide-xml-rng-parser.c
+++ b/src/plugins/xml-pack/ide-xml-rng-parser.c
@@ -108,7 +108,7 @@ struct _IdeXmlRngParser
   XmlRngFlags        flags;
 };
 
-G_DEFINE_TYPE (IdeXmlRngParser, ide_xml_rng_parser, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeXmlRngParser, ide_xml_rng_parser, G_TYPE_OBJECT)
 
 static inline void
 _autofree_cleanup_xmlFree (void *p)
diff --git a/src/plugins/xml-pack/ide-xml-sax.c b/src/plugins/xml-pack/ide-xml-sax.c
index e76cc07f4..9aabf6cf3 100644
--- a/src/plugins/xml-pack/ide-xml-sax.c
+++ b/src/plugins/xml-pack/ide-xml-sax.c
@@ -35,7 +35,7 @@ struct _IdeXmlSax
   guint          initialized : 1;
 };
 
-G_DEFINE_TYPE (IdeXmlSax, ide_xml_sax, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeXmlSax, ide_xml_sax, G_TYPE_OBJECT)
 
 IdeXmlSax *
 ide_xml_sax_new (void)
diff --git a/src/plugins/xml-pack/ide-xml-service.c b/src/plugins/xml-pack/ide-xml-service.c
index 715871dd6..b6ebcde1d 100644
--- a/src/plugins/xml-pack/ide-xml-service.c
+++ b/src/plugins/xml-pack/ide-xml-service.c
@@ -45,7 +45,7 @@ struct _IdeXmlService
   GCancellable      *cancellable;
 };
 
-G_DEFINE_TYPE (IdeXmlService, ide_xml_service, IDE_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeXmlService, ide_xml_service, IDE_TYPE_OBJECT)
 
 static void
 ide_xml_service_build_tree_cb2 (GObject      *object,
diff --git a/src/plugins/xml-pack/ide-xml-stack.c b/src/plugins/xml-pack/ide-xml-stack.c
index 6b55607dd..c93566448 100644
--- a/src/plugins/xml-pack/ide-xml-stack.c
+++ b/src/plugins/xml-pack/ide-xml-stack.c
@@ -38,7 +38,7 @@ struct _IdeXmlStack
   GArray  *array;
 };
 
-G_DEFINE_TYPE (IdeXmlStack, ide_xml_stack, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeXmlStack, ide_xml_stack, G_TYPE_OBJECT)
 
 IdeXmlStack *
 ide_xml_stack_new (void)
diff --git a/src/plugins/xml-pack/ide-xml-symbol-node.c b/src/plugins/xml-pack/ide-xml-symbol-node.c
index 6c1f982de..d5ebfba4c 100644
--- a/src/plugins/xml-pack/ide-xml-symbol-node.c
+++ b/src/plugins/xml-pack/ide-xml-symbol-node.c
@@ -73,7 +73,7 @@ typedef enum
   NODE_WALKER_VISIBLE_DEEP
 } NodeWalker;
 
-G_DEFINE_TYPE (IdeXmlSymbolNode, ide_xml_symbol_node, IDE_TYPE_SYMBOL_NODE)
+G_DEFINE_FINAL_TYPE (IdeXmlSymbolNode, ide_xml_symbol_node, IDE_TYPE_SYMBOL_NODE)
 
 static void
 ide_xml_symbol_node_get_location_async (IdeSymbolNode       *node,
diff --git a/src/plugins/xml-pack/ide-xml-symbol-resolver.c b/src/plugins/xml-pack/ide-xml-symbol-resolver.c
index 52cc4a607..3070945d6 100644
--- a/src/plugins/xml-pack/ide-xml-symbol-resolver.c
+++ b/src/plugins/xml-pack/ide-xml-symbol-resolver.c
@@ -32,7 +32,7 @@ struct _IdeXmlSymbolResolver
 
 static void symbol_resolver_iface_init (IdeSymbolResolverInterface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (IdeXmlSymbolResolver, ide_xml_symbol_resolver, IDE_TYPE_OBJECT,
+G_DEFINE_FINAL_TYPE_WITH_CODE (IdeXmlSymbolResolver, ide_xml_symbol_resolver, IDE_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (IDE_TYPE_SYMBOL_RESOLVER, symbol_resolver_iface_init))
 
 static void
diff --git a/src/plugins/xml-pack/ide-xml-symbol-tree.c b/src/plugins/xml-pack/ide-xml-symbol-tree.c
index 533a36653..151b255b6 100644
--- a/src/plugins/xml-pack/ide-xml-symbol-tree.c
+++ b/src/plugins/xml-pack/ide-xml-symbol-tree.c
@@ -31,7 +31,7 @@ struct _IdeXmlSymbolTree
 
 static void symbol_tree_iface_init (IdeSymbolTreeInterface *iface);
 
-G_DEFINE_TYPE_EXTENDED (IdeXmlSymbolTree, ide_xml_symbol_tree, G_TYPE_OBJECT, 0,
+G_DEFINE_TYPE_EXTENDED (IdeXmlSymbolTree, ide_xml_symbol_tree, G_TYPE_OBJECT, G_TYPE_FLAG_FINAL,
                         G_IMPLEMENT_INTERFACE (IDE_TYPE_SYMBOL_TREE, symbol_tree_iface_init))
 
 static guint
diff --git a/src/plugins/xml-pack/ide-xml-tree-builder.c b/src/plugins/xml-pack/ide-xml-tree-builder.c
index 9cdcb2432..90069737c 100644
--- a/src/plugins/xml-pack/ide-xml-tree-builder.c
+++ b/src/plugins/xml-pack/ide-xml-tree-builder.c
@@ -64,7 +64,7 @@ static void fetch_schema_state_free (FetchSchemasState *state);
 G_DEFINE_AUTOPTR_CLEANUP_FUNC (FetchSchemasState, fetch_schema_state_free)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC (TreeBuilderState, tree_builder_state_free)
 
-G_DEFINE_TYPE (IdeXmlTreeBuilder, ide_xml_tree_builder, IDE_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeXmlTreeBuilder, ide_xml_tree_builder, IDE_TYPE_OBJECT)
 
 static void
 tree_builder_state_free (TreeBuilderState *state)
diff --git a/src/plugins/xml-pack/ide-xml-validator.c b/src/plugins/xml-pack/ide-xml-validator.c
index 294b3db6e..973b24256 100644
--- a/src/plugins/xml-pack/ide-xml-validator.c
+++ b/src/plugins/xml-pack/ide-xml-validator.c
@@ -50,7 +50,7 @@ typedef struct _ValidState
   xmlDoc           *doc;
 } ValidState;
 
-G_DEFINE_TYPE (IdeXmlValidator, ide_xml_validator, IDE_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (IdeXmlValidator, ide_xml_validator, IDE_TYPE_OBJECT)
 
 IdeXmlSchemaKind
 ide_xml_validator_get_kind (IdeXmlValidator *self)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]