@Override
 public void readFrom(StreamInput in) throws IOException {
   super.readFrom(in);
   shards = new ShardSegments[in.readVInt()];
   for (int i = 0; i < shards.length; i++) {
     shards[i] = ShardSegments.readShardSegments(in);
   }
 }
 @Override
 public void readFrom(StreamInput in) throws IOException {
   super.readFrom(in);
   int n = in.readInt();
   simple = new HashSet<String>();
   for (int i = 0; i < n; i++) {
     simple.add(in.readString());
   }
 }
 @Override
 public void readFrom(StreamInput in) throws IOException {
   super.readFrom(in);
   tookInMillis = in.readVLong();
   count = in.readVLong();
   int size = in.readVInt();
   matches = new Match[size];
   for (int i = 0; i < size; i++) {
     matches[i] = new Match();
     matches[i].readFrom(in);
   }
 }
 @Override
 public void readFrom(StreamInput in) throws IOException {
   super.readFrom(in);
   count = in.readVLong();
 }