private void doSetCategoryPath() throws DuplicateNameException {
		CategoryPath path = categoryPathEditor.getCellEditorValue();
		// First see if a category from the list was chosen and make sure the user didn't modify it.
		// If they did, path needs to be parsed separately.
		String editorValue = categoryPathEditor.getCellEditorValueAsText();
		if (path != null && path.getPath().equals(editorValue)) {
			currentStructure.setCategoryPath(path);
			return;
		}

		// Selecting/entering a category is optional; root is default
		if (!editorValue.isBlank()) {
			CategoryPath parsedPath = parseEnteredCategoryPath(editorValue);
			currentStructure.setCategoryPath(parsedPath);
			return;
		}

		currentStructure.setCategoryPath(CategoryPath.ROOT);
	}
Shows a dialog that allows the user to create a new structure.
<p>
This method expects that {@code program} and {@code structure} be
non-null.

@param  program The current program which will be used to obtain current
        structures in the system.
@param  structure The new structure shell that will be used to find
        matching structures in memory.
@return The new structure that will be added to memory.  This will be
        a new structure with a new name, or an existing structure.
@throws NullPointerException if either of the parameters are null.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/data/CreateStructureDialog.java