public List<RegionDescriptor> analyze() throws MemoryAccessException,
			AddressOutOfBoundsException, ExceptionHandlerFrameException, CancelledException {

		List<RegionDescriptor> descriptors = new ArrayList<>();

		MemoryBlock[] blocks = program.getMemory().getBlocks();

		int blockCount = blocks.length;
		monitor.setMaximum(blockCount);

		for (MemoryBlock block : blocks) {
			monitor.checkCancelled();
			monitor.incrementProgress(1);
			if (block.getName().startsWith(DEBUG_FRAME_BLOCK_NAME)) {
				descriptors.addAll(analyzeSection(block));
			}
		}

		return Collections.unmodifiableList(descriptors);

	}
Analyzes and annotates the debug frame section.
@return the region descriptors that compose the debug frame section.
@throws MemoryAccessException if memory couldn't be read/written while processing the section.
@throws AddressOutOfBoundsException if one or more expected addresses weren't in the program.
@throws ExceptionHandlerFrameException if the FDE table can't be decoded.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/exceptionhandlers/gcc/sections/DebugFrameSection.java