public void markupArray(String sliceName, String namespaceName, DataType elementType,
			boolean ptr, MarkupSession session) throws IOException {
		if (len == 0 || !isValid()) {
			return;
		}

		DataTypeManager dtm = programContext.getDTM();
		if (ptr) {
			elementType = new PointerDataType(elementType, programContext.getPtrSize(), dtm);
		}

		ArrayDataType arrayDT = new ArrayDataType(elementType, (int) cap, -1, dtm);
		Address addr = programContext.getDataAddress(array);
		session.markupAddress(addr, arrayDT);
		if (sliceName != null) {
			session.labelAddress(addr, sliceName, namespaceName);
		}
	}
Marks up the memory occupied by the array elements with a name and a Ghidra ArrayDataType.

@param sliceName used to label the memory location
@param namespaceName namespace the label symbol should be placed in
@param elementType Ghidra datatype of the array elements, null ok if ptr == true 
@param ptr boolean flag, if true the element type is really a pointer to the supplied
data type
@param session state and methods to assist marking up the program
@throws IOException if error
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/golang/rtti/GoSlice.java