@Override
	public boolean removeCategory(String categoryName, TaskMonitor monitor) {
		mgr.lock.acquire();
		try {
			checkDeleted();
			CategoryDB c = getCategory(categoryName);
			if (c == null) {
				return false;
			}

			Category[] cats = c.getCategories();
			for (Category cat : cats) {
				if (monitor.isCancelled()) {
					return false;
				}
				c.removeCategory(cat.getName(), monitor);
			}

			DataType[] dts = c.getDataTypes();
			List<DataType> dtList = Arrays.asList(dts);
			try {
				mgr.remove(dtList, monitor);
			}
			catch (CancelledException e) {
				return false;
			}

			try {
				mgr.getCategoryDBAdapter().removeCategory(c.getKey());
				subcategoryMap.remove(categoryName);
				mgr.categoryRemoved(this, categoryName, c.getKey());
				return true;
			}
			catch (IOException e) {
				mgr.dbError(e);
			}
			return false;
		}
		finally {
			mgr.lock.release();
		}
	}
@see ghidra.program.model.data.Category#createCategory(java.lang.String)
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/CategoryDB.java