public static DataType getSignedDataType(int size, DataTypeManager dtm) {
		if (size < 1) {
			return DefaultDataType.dataType;
		}
		if (size == 16) {
			return Integer16DataType.dataType;
		}
		if (size > 8) {
			return new ArrayDataType(SignedByteDataType.dataType, size, 1);
		}
		if (dtm != null) {
			DataOrganization dataOrganization = dtm.getDataOrganization();
			if (dataOrganization != null) {
				if (size == dataOrganization.getIntegerSize()) {
					return IntegerDataType.dataType.clone(dtm);
				}
				if (size == dataOrganization.getShortSize()) {
					return ShortDataType.dataType.clone(dtm);
				}
				if (size == dataOrganization.getLongSize()) {
					return LongDataType.dataType.clone(dtm);
				}
				if (size == dataOrganization.getLongLongSize()) {
					return LongLongDataType.dataType.clone(dtm);
				}
			}
		}
		return getSignedTypes()[size - 1];
	}
Get a Signed Integer data-type instance of the requested size

@param size data type size, sizes greater than 8 (and other than 16) will cause an
           SignedByteDataType[size] (i.e., Array) to be returned.
@param dtm optional program data-type manager, if specified a generic data-type will be
           returned if possible.
@return signed integer data type
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/data/AbstractIntegerDataType.java