private static Data getDataAt(Program program, Address addr) {
		Listing listing = program.getListing();
		Data data = listing.getDataContaining(addr);
		if (data != null) {
			int offset = (int) addr.subtract(data.getAddress());
			if (offset != 0) {
				data = data.getPrimitiveAt(offset);
			}
		}
		return data;
	}
Construct a pointer of a specified length to a referencedDataType. Note: It
is preferred to use default sized pointers when possible (i.e., length=-1,
see {@link #PointerDataType(DataType, DataTypeManager)}) instead of
explicitly specifying the pointer length value.

@param referencedDataType data type this pointer points to
@param length             pointer length (-1 will result in dynamically-sized
                          pointer)
@param dtm                associated data type manager whose data
                          organization will be used
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/data/PointerDataType.java