public void create(Address addr, DwarfEHDecoder decoder) throws MemoryAccessException {

		/* use current program location if 'addr' is null */
		if (addr == null || monitor.isCancelled())
			return;

		Address baseAddr = addr;
		monitor.setMessage("Creating LSDA Call Site Record");

		Address callSiteDataAddr = addr;
		addr = createCallSitePosition(addr, decoder);
		addr = createCallSiteLength(addr, decoder);
		Address lpDataAddr = addr;
		addr = createLandingPad(addr, decoder);

		addr = createAction(addr);

		Address lpStart = region.getLSDATable().getHeader().getLPStartAddress();

		Address callSiteBaseAddr = lpStart.add(getCallSitePosition());
		Address callSiteExtentAddr = callSiteBaseAddr.add(getCallSiteLength() - 1);

		callSiteRange = new AddressRangeImpl(callSiteBaseAddr, callSiteExtentAddr);

		landingPadAddr = lpStart.add(getLandingPadOffset());

		SetCommentCmd commentCmd =
			new SetCommentCmd(baseAddr, CommentType.PLATE, "(LSDA) Call Site Record");
		commentCmd.applyTo(program);

		if (program.getMemory().contains(callSiteBaseAddr)) {
			program.getReferenceManager()
					.addMemoryReference(callSiteDataAddr, callSiteBaseAddr, RefType.DATA,
						SourceType.ANALYSIS, 0);
		}

		if (program.getMemory().contains(landingPadAddr)) {
			program.getReferenceManager()
					.addMemoryReference(lpDataAddr, landingPadAddr, RefType.DATA,
						SourceType.ANALYSIS, 0);
		}

		nextAddress = addr;
	}
Creates data for a call site record at the indicated address and creates a comment to 
identify it as a call site record.
<br>Note: This method must get called before any of the "get..." methods.
@param addr the start (minimum address) of this call site record.
@param decoder decodes dwarf encoded information within the LSDA
@throws MemoryAccessException if memory couldn't be accessed for the call site record
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/exceptionhandlers/gcc/structures/gccexcepttable/LSDACallSiteRecord.java