public void read(PortableReader reader) throws IOException {
super.read(reader);
retain = reader.readBoolean("r");
final ObjectDataInput in = reader.getRawDataInput();
final int size = in.readInt();
valueSet = new HashSet<Data>(size);
for (int i = 0; i < size; i++) {
final Data value = new Data();
value.readData(in);
valueSet.add(value);