i-=12; if(i<indirectCount)  return indirectRead( Ext2Utils.get32(data, 40+12*4), i, 1 );   i-=indirectCount; if(i<indirectCount * indirectCount)  return indirectRead( Ext2Utils.get32(data, 40+13*4), i, 2 );   i-=indirectCount*indirectCount; if(i<indirectCount*indirectCount*indirectCount)  return indirectRead( Ext2Utils.get32(data, 40+14*4), i, 3 );   throw new IOException(new FileSystemException("Internal FS exception: getDataBlockIndex(i="+i+")")); }
if (i < 12) { log.debug("getDataBlockNr(): block nr: " + Ext2Utils.get32(data, 40 + (int) i * 4)); return Ext2Utils.get32(data, 40 + (int) i * 4); }   i -= 12; if (i < indirectCount)  return indirectRead(Ext2Utils.get32(data, 40 + 12 * 4), i, 1);   i -= indirectCount; if (i < indirectCount * indirectCount)  return indirectRead(Ext2Utils.get32(data, 40 + 13 * 4), i, 2);    i -= indirectCount * indirectCount; if (i < indirectCount * indirectCount * indirectCount)  return indirectRead(Ext2Utils.get32(data, 40 + 14 * 4), i, 3);   throw new IOException("Internal FS exception: getDataBlockIndex(i=" + i + ")"); }
	private long getDataBlockNr(long i) throws IOException {		final long blockCount = getAllocatedBlockCount();		final int indirectCount = getIndirectCount();		if(i > blockCount-1) 			throw new IOException(	"Trying to read block "+i+" (counts from 0), while"+									" INode contains only "+blockCount+" blocks");				//get the direct blocks (0; 11)		if(i<12) {			log.debug("getDataBlockNr(): block nr: "+Ext2Utils.get32(data,40+(int)i*4)); 			return Ext2Utils.get32(data,40+(int)i*4);		}		//see the indirect blocks (12; indirectCount-1)		i-=12;		if(i<indirectCount)			//the 12th index points to the indirect block			return indirectRead( Ext2Utils.get32(data, 40+12*4), i, 1 );				//see the double indirect blocks (indirectCount; doubleIndirectCount-1)		i-=indirectCount;		if(i<indirectCount * indirectCount)			//the 13th index points to the double indirect block			return indirectRead( Ext2Utils.get32(data, 40+13*4), i, 2 );				//see the triple indirect blocks (doubleIndirectCount; tripleIndirectCount-1)		i-=indirectCount*indirectCount;		if(i<indirectCount*indirectCount*indirectCount)			//the 14th index points to the triple indirect block			return indirectRead( Ext2Utils.get32(data, 40+14*4), i, 3 );					//shouldn't get here		throw new IOException(new FileSystemException("Internal FS exception: getDataBlockIndex(i="+i+")"));	}