void setByteBlocks(ByteBlockSet blockSet) {
		this.blockSet = blockSet;
		blocks = null;
		indexMap = null;

		if (blockSet != null) {
			blocks = blockSet.getBlocks();
			if (blocks.length > 0) {
				indexMap = new IndexMap(blockSet, bytesPerLine, blockOffset);
				String start = blocks[0].getLocationRepresentation(BigInteger.ZERO);
				startField.setText(start);
				ByteBlock lastBlock = blocks[blocks.length - 1];
				endField.setText(lastBlock
						.getLocationRepresentation(lastBlock.getLength().subtract(BigInteger.ONE)));

				clearSelection();
			}
		}
		if (indexMap == null) {
			indexMap = new IndexMap();
		}
		indexFactory.setIndexMap(indexMap);
		indexFactory.setSize(getIndexSizeInChars());

		// Do the following loop twice - once with update off and then with update on.
		// need to do this because all the byte view components must have their models 
		// updated before any one of them tells their dependents about the change.
		for (ByteViewerComponent c : viewList) {
			c.enableIndexUpdate(false);
			c.setIndexMap(indexMap);
		}
		for (ByteViewerComponent c : viewList) {
			c.enableIndexUpdate(true);
			c.setIndexMap(indexMap);
		}
		if (blocks != null && blocks.length > 0) {
			indexedView.setIndexName(blocks[0].getIndexName());
		}
		indexPanel.dataChanged(BigInteger.ZERO, indexMap.getNumIndexes());
		indexSetChanged();
	}
Set the byte blocks and create an new IndexMap object that will be passed to the index panel
and to each component that shows a format.
@param blockSet the set of blocks
Ghidra/Features/ByteViewer/src/main/java/ghidra/app/plugin/core/byteviewer/ByteViewerPanel.java