protected boolean createData() throws CodeUnitInsertionException, CancelledException {

		Program program = model.getProgram();
		Memory memory = program.getMemory();
		DataType dt = getDataType();
		if (dt == null) {
			throw new CodeUnitInsertionException(
				"Unable to get data type from model, " + model.getName() + ".");
		}
		if (!memory.getLoadedAndInitializedAddressSet().contains(address)) {
			String message = "Can't create an " + dt.getName() + " @ " + address +
				" which isn't in loaded and initialized memory for " + program.getName();
			throw new CodeUnitInsertionException(message);
		}

		// When creating data, this will create an array with count number of elements
		// of the model's data type if the data type obtained from the model hasn't
		// already done so.
		if (!model.isDataTypeAlreadyBasedOnCount() && count > 1) {
			// If there are multiple then create as an array.
			dt = new ArrayDataType(dt, count, dt.getLength(), program.getDataTypeManager());
		}

		monitor.checkCancelled();

		// Is the data type already applied at the address?
		if (matchingDataExists(dt, program, address)) {
			return false;
		}

		monitor.checkCancelled();

		// Create data at the address using the datatype.
		DataUtilities.createData(program, address, dt, dt.getLength(), getClearDataMode());

		return true;
	}
Creates data at this command's address using the data type obtained from the model.
<br>If you need to create data other than by using the data type returned from getDataType(),
you should override this method.
@return false if the data type was not created because it already exists, true otherwise
@throws CodeUnitInsertionException if the data can't be created.
@throws CancelledException if the user cancels this task.
Ghidra/Features/MicrosoftCodeAnalyzer/src/main/java/ghidra/app/cmd/data/AbstractCreateDataBackgroundCmd.java