private static void validate(DataType baseDt) throws IllegalArgumentException {
		if (baseDt instanceof BitFieldDataType) {
			throw new IllegalArgumentException(
				"Array data-type may not be a bitfield: " + baseDt.getName());
		}
		if (baseDt instanceof FactoryDataType) {
			throw new IllegalArgumentException(
				"Array data-type may not be a Factory data-type: " + baseDt.getName());
		}
		if (baseDt instanceof Dynamic) {
			if (!((Dynamic) baseDt).canSpecifyLength()) {
				throw new IllegalArgumentException(
					"Array data-type may not be a non-sizable Dynamic data-type: " +
						baseDt.getName());
			}
		}
		else if (baseDt.getLength() < 1) { // not Dynamic
			throw new IllegalArgumentException("Data type may not report a length less than 1: " +
				baseDt.getClass().getSimpleName());
		}
	}
Validate a array base datatype to ensure that it is allowed
@param baseDt intended base datatype for array (always pass in typedef's base type if applicable)
@throws IllegalArgumentException if dt is not a valid base datatype for an array
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/data/ArrayDataType.java