@Override
	public Object getColumnValueForRow(MemoryBlock block, int columnIndex) {
		try {
			switch (columnIndex) {
				case NAME:
					return block.getName();
				case START:
					return getAddressString(block.getStart());
				case END:
					return getAddressString(block.getEnd());
				case LENGTH:
					long len = block.getEnd().subtract(block.getStart()) + 1;
					return "0x" + Long.toHexString(len);
				case READ:
					return block.isRead() ? Boolean.TRUE : Boolean.FALSE;
				case WRITE:
					return block.isWrite() ? Boolean.TRUE : Boolean.FALSE;
				case EXECUTE:
					return block.isExecute() ? Boolean.TRUE : Boolean.FALSE;
				case VOLATILE:
					return block.isVolatile() ? Boolean.TRUE : Boolean.FALSE;
				case ARTIFICIAL:
					return block.isArtificial() ? Boolean.TRUE : Boolean.FALSE;
				case OVERLAY:
					return getOverlayBaseSpaceName(block);
				case INIT:
					MemoryBlockType blockType = block.getType();
					if (blockType == MemoryBlockType.BIT_MAPPED) {
						return null;
					}
					return (block.isInitialized() ? Boolean.TRUE : Boolean.FALSE);
				case BYTE_SOURCE:
					return getByteSourceDescription(block.getSourceInfos());
				case SOURCE:
					if ((block.getType() == MemoryBlockType.BIT_MAPPED) ||
						(block.getType() == MemoryBlockType.BYTE_MAPPED)) {
						MemoryBlockSourceInfo info = block.getSourceInfos().get(0);
						return info.getMappedRange().get().getMinAddress().toString();
					}
					return block.getSourceName();
				case COMMENT:
					return block.getComment();
				case BLOCK_TYPE:
					return block.getType().toString();
				default:
					return "UNKNOWN";
			}
		}
		catch (ConcurrentModificationException e) {
			update();
		}
		return null;
	}
Create a new initialized block based on the given uninitialized block.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/memory/MemoryMapModel.java