int store_index = getPieceIndex( raf, piece_number, false );
if ( store_index == -1 ){
throw( new FMFileManagerException( "piece marked as complete but not yet allocated" ));
}
if ( piece_number == store_index ){
// already in the right place
if ( TRACE ){
System.out.println( " already in right place" );
}
return;
}
// find out what's currently stored in the place this piece should be
int swap_piece_number = piece_reverse_map[ piece_number ];
if ( swap_piece_number < 1 ){
throw( new FMFileManagerException( "Inconsistent: failed to find piece to swap" ));
}
if ( TRACE ){
System.out.println( " swapping " + piece_number + " and " + swap_piece_number + ": " + piece_number + " <-> " + store_index );
}