private void doValidate() throws InvalidDataTypeException {
		if (!isWindows()) {
			throw new InvalidDataTypeException(
				getName() + " data type model is only valid for Visual Studio windows PE.");
		}
		if (!isValidAddress()) {
			throw new InvalidDataTypeException(
				getName() + " data type isn't at a valid address " + getAddress() + ".");
		}
//		if (!isInitializedAddress()) {
//			throw new InvalidDataTypeException(
//				getName() + " data type isn't on an initialized address " + getAddress() + ".");
//		}
		if (!isLoadedAndInitializedAddress()) {
			throw new InvalidDataTypeException(getName() +
				" data type isn't on a loaded and initialized address " + getAddress() + ".");
		}
		checkDataType();
		if (!fitsInSingleMemoryBlock()) {
			throw new InvalidDataTypeException(
				getName() + " data type doesn't fit in a single memory block when placed at " +
					getAddress() + ".");
		}
		if (getAddress().getOffset() % getAlignment() != 0) {
			throw new InvalidDataTypeException(
				getName() + " data type is not properly aligned at " + getAddress() + ".");
		}

		Listing listing = program.getListing();
		Address startAddress = address;

		int dtLength = getDataTypeLength();
		long numBytes = dtLength * count;
		if (numBytes <= 0) {
			throw new InvalidDataTypeException(
				"Cannot determine length for " + getName() + " data type at " + getAddress() + ".");
		}
		Address endAddress = address.add(numBytes - 1);

		if (!getValidationOptions().shouldIgnoreInstructions() &&
			containsInstruction(listing, startAddress, endAddress)) {
			throw new InvalidDataTypeException("Instructions are in the way of " + count + " " +
				getName() + " data type(s) at " + getAddress() + ".");
		}

		if (!getValidationOptions().shouldIgnoreDefinedData() &&
			containsDefinedData(listing, startAddress, endAddress)) {
			throw new InvalidDataTypeException("Defined data is in the way of " + count + " " +
				getName() + " data type(s) at " + getAddress() + ".");
		}

	}
Performs validation of the parts that are common to all models that extend this class.
@throws InvalidDataTypeException if the model isn't valid for the associated program and 
address. The message in the exception indicates why the model isn't valid.
Ghidra/Features/MicrosoftCodeAnalyzer/src/main/java/ghidra/app/cmd/data/AbstractCreateDataTypeModel.java