class SceneController implements Initializable {
    
    private static final Logger LOGGER = LoggerManager.getLogger(SceneController.class);
    private static final SemanticVersionComparator SEMANTIC_VERSION =
        new SemanticVersionComparator();
    
    public @Inject UserInterfaceComponent ui;
    public @Inject InfoComponent info;
    public @Inject InjectionLoader loader;
    public @Inject VersionComponent version;
    public @Inject ProjectComponent projects;

    private @FXML VBox top;
    private @FXML SplitPane horizontal;
    private @FXML SplitPane vertical;
    
    @Override
    public void initialize(URL location, ResourceBundle resources) {<FILL_FUNCTION_BODY>}
}

        top.getChildren().add(loader.load("Menubar"));
        top.getChildren().add(loader.load("Toolbar"));

        final Node projectTree = loader.load("ProjectTree");
        final Node workspace   = loader.load("Workspace");
        final Node output      = loader.load("Output");

        horizontal.getItems().add(0, projectTree);
        vertical.getItems().add(workspace);
        vertical.getItems().add(output);

        ui.prepareProjectTree(horizontal, projectTree);
        ui.prepareWorkspace(vertical, workspace);
        ui.prepareOutput(vertical, output);

        horizontal.setDividerPositions(0.3, 0.7);
        vertical.setDividerPositions(0.7, 0.3);

        Statistics.report(info, projects, GUI_PROJECT_LOADED);

        CompletableFuture.runAsync(() -> {
            try {
                version.latestVersion()
                    .thenAcceptAsync(release -> runLater(() -> {
                        final int compare = SEMANTIC_VERSION.compare(
                            release, info.getImplementationVersion()
                        );

                        if (compare == 0) {
                            ui.showNotification(
                                "Your version of " + info.getTitle() + " is up to date."
                            );
                        } else if (compare > 0) {
                            ui.showNotification(
                                "A new version " + release +
                                " of " + info.getTitle() + " is available."
                            );
                        } else {
                            ui.showNotification(
                                "Your version " + info.getImplementationVersion() +
                                " of " + info.getTitle() + " is newer than the released " +
                                release + "."
                            );
                        }
                    })).get(3, TimeUnit.SECONDS);
            } catch (final ExecutionException ex) {
                LOGGER.debug(ex, "Error loading last released version.");
            } catch (final InterruptedException ex) {
                LOGGER.debug(ex, "Error loading last released version.");
                Thread.currentThread().interrupt();
            } catch (final TimeoutException ex) {
                LOGGER.debug(ex, "Request for latest released version timed out.");
            }
        });
    
<no_super_class>