@Override
 public void parse(BserValues values) throws IOException {
   this.groupPeer = values.getObj(1, new ApiGroupOutPeer());
   this.rid = values.getLong(2);
   this.optimizations = new ArrayList<ApiUpdateOptimization>();
   for (int b : values.getRepeatedInt(3)) {
     optimizations.add(ApiUpdateOptimization.parse(b));
   }
 }
 @Override
 public void parse(BserValues values) throws IOException {
   this.peer = values.getObj(1, new ApiPeer());
   this.rid = values.getLong(2);
   List<ApiMessageReaction> _reactions = new ArrayList<ApiMessageReaction>();
   for (int i = 0; i < values.getRepeatedCount(3); i++) {
     _reactions.add(new ApiMessageReaction());
   }
   this.reactions = values.getRepeatedObj(3, _reactions);
 }
 @Override
 public void parse(BserValues values) throws IOException {
   this.uid = values.getInt(1);
   this.accessHash = values.getLong(2);
 }
 @Override
 public void parse(BserValues values) throws IOException {
   this.peer = values.getObj(1, new ApiPeer());
   this.startDate = values.getLong(2);
 }