default Object getArrayValue(MemBuffer buf, Settings settings, int length) {
		if (!buf.getMemory().getAllInitializedAddressSet().contains(buf.getAddress())) {
			return null;
		}
		ArrayStringable as = ArrayStringable.getArrayStringable(getDataType());
		Object value = (as != null) ? as.getArrayString(buf, settings, length) : null;

		return value;
		// TODO
		// For large array it is not scalable to create a java array object.  Perhaps
		// we could create a GhidraArray that can dish out objects.
//			DataType dt = arrayDt.getDataType();
//			Class<?> valueClass = dt.getValueClass(settings);
//			if (valueClass != null) {
//				int count = arrayDt.getNumElements();
//				int elementLength = arrayDt.getElementLength();
//				WrappedMemBuffer wrappedBuffer = new WrappedMemBuffer(buf, 0);
//				Object[] array = (Object[]) java.lang.reflect.Array.newInstance(valueClass, count);
//				for (int i = 0; i < count; i++) {
//					wrappedBuffer.setBaseOffset(i * elementLength);
//					array[i] = dt.getValue(wrappedBuffer, settings, elementLength);
//				}
//				return array;
//			}
	}
Get the value object which corresponds to an array in memory.  This will either be a
String for the ArrayStringable case or null.

@param buf data buffer
@param settings data settings
@param length length of array
@return a String if it is an array of chars; otherwise null.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/data/Array.java