DockableEntry entry = new DockableEntry();
dockables.add( entry );
entry.id = in.readUTF();
if( in.readBoolean() ){
String key = in.readUTF();
entry.current = version7 ? resuceMode( key ) : new Path( key );
}
entry.history = new Path[ in.readInt() ];
for( int j = 0; j < entry.history.length; j++ ){
String key = in.readUTF();
entry.history[j] = version7 ? resuceMode( key ) : new Path( key );
}
if( version7 ){
int count = 0;
for( int j = 0; j < entry.history.length; j++ ){
if( entry.history[j] != null ){
count++;
}
}
if( count != entry.history.length ){
Path[] temp = entry.history;
entry.history = new Path[ count ];
int index = 0;
for( int j = 0; j < temp.length; j++ ){
if( temp[j] != null ){
entry.history[ index++ ] = temp[j];
}
}
}
}
entry.properties = new HashMap<Path, B>();
for( int j = 0, m = in.readInt(); j<m; j++ ){
String key = in.readUTF();
Path mode = version7 ? resuceMode( key ) : new Path( key );
B property = converter.readProperty( in );
if( mode != null ){
entry.properties.put( mode, property );
}
}
}
// new since 1.0.8
modes.clear();
if( version7 ){
rescueSettings( in, version );
}
else{
for( int i = 0, n = in.readInt(); i<n; i++ ){
Path id = new Path( in.readUTF() );
int count = in.readInt();
byte[] content = new byte[ count ];
int offset = 0;