private final boolean readEntry(int index,StartEntry se,EndEntry ee){
  int offs=indexToFileOffs(index);
  for (int i=0; i < 16; i++)   bb.put(i,mapBuf.get(offs + i));
  int otherIndex=bb.getInt(0);
  boolean isStartEntry=(otherIndex == -1) || (otherIndex > index);
  if (isStartEntry) {
    se.endIndex=otherIndex;
    se.parentIndex=bb.getInt(4);
    int m=bb.getShort(8);
    se.move=new Move(m & 63,(m >> 6) & 63,(m >> 12) & 15);
    se.alpha=bb.getShort(10);
    se.beta=bb.getShort(12);
    se.ply=bb.get(14);
    se.depth=bb.get(15);
  }
 else {
    ee.startIndex=otherIndex;
    ee.score=bb.getShort(4);
    ee.scoreType=bb.getShort(6);
    ee.evalScore=bb.getShort(8);
    ee.hashKey=bb.getLong(8) & 0x0000ffffffffffffL;
  }
  return isStartEntry;
}

private final boolean readEntry ( int index , StartEntry se , EndEntry ee ) { int offs = indexToFileOffs ( index ) ; for ( int i = 0 ; i < 16 ; i ++ ) bb . put ( i , mapBuf . get ( offs + i ) ) ; int otherIndex = bb . getInt ( 0 ) ; boolean isStartEntry = ( otherIndex == - 1 ) || ( otherIndex > index ) ; if ( isStartEntry ) { se . endIndex = otherIndex ; se . parentIndex = bb . getInt ( 4 ) ; int m = bb . getShort ( 8 ) ; se . move = new Move ( m & 63 , ( m > > 6 ) & 63 , ( m > > 12 ) & 15 ) ; se . alpha = bb . getShort ( 10 ) ; se . beta = bb . getShort ( 12 ) ; se . ply = bb . get ( 14 ) ; se . depth = bb . get ( 15 ) ; } else { ee . startIndex = otherIndex ; ee . score = bb . getShort ( 4 ) ; ee . scoreType = bb . getShort ( 6 ) ; ee . evalScore = bb . getShort ( 8 ) ; ee . hashKey = bb . getLong ( 8 ) & 0x0000ffffffffffffL ; } return isStartEntry ; }
read a start / end entry .
