private Address createLPStartPointer(Address addr) throws MemoryAccessException {
		String comment = "(LSDA) LPStart Offset";

		DwarfEHDecoder decoder = DwarfDecoderFactory.getDecoder(lpStartEncoding);
		if (decoder.getDataFormat() == DwarfEHDataDecodeFormat.DW_EH_PE_omit) {
			lpStartAddr = region.getRangeStart();
			return addr;
		}

		DwarfDecodeContext ctx = new DwarfDecodeContext(program, addr, region.getRangeStart());

		long raw = decoder.decode(ctx);

		// the bottom 4 bits are *not* part of the pointer
		long controls = raw & 0x0F;
		raw |= 0xF;
		lpStartAddr = makeAddress(program, raw);

		hasTypeTable = (controls & LPSTART_PTR_TYPETABLE_FLAG) == LPSTART_PTR_TYPETABLE_FLAG;

		int encodedLen = ctx.getEncodedLength();

		DataType encodedDt = decoder.getDataType(program);

		createAndCommentData(program, addr, encodedDt, comment, CommentType.EOL);

		curSize += encodedLen;
		return addr.add(encodedLen);
	}
Constructor for the LSDA header which indicates encoding for the LSDA tables.
<br>Note: The <code>create(Address)</code> method must be called after constructing an 
LSDAHeader to associate it with an address before any of its "get..." methods are called.
@param monitor task monitor to see if the user has cancelled analysis.
@param program the program containing this header.
@param region the region of the program associated with this header.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/exceptionhandlers/gcc/structures/gccexcepttable/LSDAHeader.java