@Override
	public DataType toDataType() throws DuplicateNameException, IOException {
		Structure structure;
		if( isExtentTree ) {
			structure = new StructureDataType("ext4_i_block_" + header.getEh_depth() + "_" + header.getEh_entries(), 0);
			structure.add( header.toDataType(), "header", null );
			if( extentEntries != null ) {
				for (int i = 0; i < extentEntries.size(); i++ ) {
					structure.add(extentEntries.get(i).toDataType(), "entry_" + i, null);
				}
			}
			if( indexEntries != null ) {
				for (int i = 0; i < indexEntries.size(); i++ ) {
					structure.add(indexEntries.get(i).toDataType(), "idx_" + i, null);
				}
			}
		} else {
			structure = new StructureDataType("ext4_i_block", 0);
		}
		// empty structures still have a length of 1, but byte array should be 60 bytes, not 59
		int extra = structure.getLength() == 1 ? 60 : 60 - structure.getLength();
		if( extra > 0 ) {
			structure.add( new ArrayDataType(BYTE, extra, BYTE.getLength()), "extra", null);
		}
		return structure;
	}
Reads an IBlock that is expected to contain extents

@param provider {@link ByteProvider} to read from
@param offset offset of the extent header
@return new Ext4IBlock
@throws IOException if error
Ghidra/Features/FileFormats/src/main/java/ghidra/file/formats/ext4/Ext4IBlock.java