public void create(Address bottom, Address top) {

		if (bottom == null || top == null || monitor.isCancelled()) {
			return;
		}

		monitor.setMessage("Creating LSDA Type Table");

		int encoding = region.getLSDATable().getHeader().getTTypeEncoding();
		DwarfEHDecoder decoder = DwarfDecoderFactory.getDecoder(encoding);

		DataType encodedDt = decoder.getDataType(program);
		int stride = decoder.getDecodeSize(program);

		String comment = "Type Reference";

		top = align4(top);

		Address addr = bottom.subtract(stride - 1);

		while (addr.compareTo(top) >= 0) {
			DwarfDecodeContext ctx = new DwarfDecodeContext(program, addr);

			try {
				Address typeRef = decoder.decodeAddress(ctx);

				typeInfoAddrs.add(typeRef);

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

				if (typeRef.getOffset() != 0) {
					program.getReferenceManager()
							.addMemoryReference(addr, typeRef, RefType.DATA, SourceType.ANALYSIS,
								0);
				}

			}
			catch (MemoryAccessException mae) {
				SetCommentCmd commentCmd =
					new SetCommentCmd(addr, CommentType.EOL, "Unable to resolve pointer");
				commentCmd.applyTo(program);
			}

			addr = addr.subtract(stride);
		}

		SetCommentCmd commentCmd = new SetCommentCmd(top, CommentType.PLATE, "(LSDA) Type Table");
		commentCmd.applyTo(program);

		nextAddress = bottom.add(1);
	}
Create a LSDA Type Table from the bytes between <code>bottom</code> and <code>top</code>. 
This table is built from bottom-to-top.
<br>Note: This method must get called before any of the "get..." methods.
@param bottom the bottom address of the type table
@param top the top address of the type table
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/exceptionhandlers/gcc/structures/gccexcepttable/LSDATypeTable.java