@Override
	public void onUpdatePath(@Nonnull PathNode<?> path) {
		// Pass to children
		for (Navigable navigableChild : getNavigableChildren())
			if (navigableChild instanceof UpdatableNavigable updatableNavigable)
				updatableNavigable.onUpdatePath(path);

		// Handle updates to the text.
		if (!updateLock.get() && path instanceof FilePathNode filePath) {
			this.path = filePath;
			FileInfo info = filePath.getValue();
			if (info.isTextFile()) {
				TextFileInfo textInfo = info.asTextFile();

				// Configure the editor to syntax-highlight based on the file extension.
				languageAssociation.configureEditorSyntax(info, editor);

				// Update the text.
				FxThreadUtil.run(() -> {
					editor.setText(textInfo.getText());

					// Prevent undo from reverting to empty state.
					editor.getCodeArea().getUndoManager().forgetHistory();
				});
			}
		}
	}
Called when {@link KeybindingConfig#getSave()} is pressed.
<br>
Updates the {@link FileInfo} in the containing {@link FileBundle}.
recaf-ui/src/main/java/software/coley/recaf/ui/pane/editing/text/TextPane.java