@Override
 public void readFrom(StreamInput in) throws IOException {
   super.readFrom(in);
   if (in.readBoolean()) {
     storeFilesMetaData = StoreFilesMetaData.readStoreFilesMetaData(in);
   }
 }
 @Override
 public void readFrom(StreamInput in) throws IOException {
   super.readFrom(in);
   int numberOfSnapshots = in.readVInt();
   Map<SnapshotId, Map<ShardId, SnapshotIndexShardStatus>> snapshotMapBuilder =
       new HashMap<>(numberOfSnapshots);
   for (int i = 0; i < numberOfSnapshots; i++) {
     SnapshotId snapshotId = SnapshotId.readSnapshotId(in);
     int numberOfShards = in.readVInt();
     Map<ShardId, SnapshotIndexShardStatus> shardMapBuilder = new HashMap<>(numberOfShards);
     for (int j = 0; j < numberOfShards; j++) {
       ShardId shardId = ShardId.readShardId(in);
       SnapshotIndexShardStatus status = SnapshotIndexShardStatus.readShardSnapshotStatus(in);
       shardMapBuilder.put(shardId, status);
     }
     snapshotMapBuilder.put(snapshotId, unmodifiableMap(shardMapBuilder));
   }
   status = unmodifiableMap(snapshotMapBuilder);
 }