@Override
 public void readFrom(StreamInput in) throws IOException {
   super.readFrom(in);
   int n = in.readVInt();
   snapshotIds = new SnapshotId[n];
   for (int i = 0; i < n; i++) {
     snapshotIds[i] = SnapshotId.readSnapshotId(in);
   }
 }
 @Override
 public void writeTo(StreamOutput out) throws IOException {
   super.writeTo(out);
   if (snapshotIds != null) {
     out.writeVInt(snapshotIds.length);
     for (int i = 0; i < snapshotIds.length; i++) {
       snapshotIds[i].writeTo(out);
     }
   } else {
     out.writeVInt(0);
   }
 }
 @Override
 public void writeTo(StreamOutput out) throws IOException {
   super.writeTo(out);
   out.writeString(requestName);
   out.writeString(nodeId);
 }
 @Override
 public void readFrom(StreamInput in) throws IOException {
   super.readFrom(in);
   requestName = in.readString();
   nodeId = in.readString();
 }
 @Override
 public void writeTo(StreamOutput out) throws IOException {
   super.writeTo(out);
   request.writeTo(out);
 }
 @Override
 public void readFrom(StreamInput in) throws IOException {
   super.readFrom(in);
   request = new ClusterStatsRequest();
   request.readFrom(in);
 }
 @Override
 public void writeTo(StreamOutput out) throws IOException {
   super.writeTo(out);
   shardId.writeTo(out);
   out.writeBoolean(unallocated);
 }
 @Override
 public void readFrom(StreamInput in) throws IOException {
   super.readFrom(in);
   shardId = ShardId.readShardId(in);
   unallocated = in.readBoolean();
 }