content: package im.actor.core.api.rpc;
  /*
   *  Generated by the Actor API Scheme generator.  DO NOT EDIT!
   */
  
  import im.actor.runtime.bser.*;
  import im.actor.runtime.collections.*;
  import static im.actor.runtime.bser.Utils.*;
  import im.actor.core.network.parser.*;
  import org.jetbrains.annotations.Nullable;
  import org.jetbrains.annotations.NotNull;
  import com.google.j2objc.annotations.ObjectiveCName;
  import java.io.IOException;
  import java.util.List;
  import java.util.ArrayList;
  import im.actor.core.api.*;
  
  public class RequestLoadHistory extends Request<ResponseLoadHistory> {
  
      public static final int HEADER = 0x76;
      public static RequestLoadHistory fromBytes(byte[] data) throws IOException {
          return Bser.parse(new RequestLoadHistory(), data);
      }
  
      private ApiOutPeer peer;
      private long date;
      private ApiListLoadMode loadMode;
      private int limit;
      private List<ApiUpdateOptimization> optimizations;
  
      public RequestLoadHistory(@NotNull ApiOutPeer peer, long date, @Nullable ApiListLoadMode loadMode, int limit, @NotNull List<ApiUpdateOptimization> optimizations) {
          this.peer = peer;
          this.date = date;
          this.loadMode = loadMode;
          this.limit = limit;
          this.optimizations = optimizations;
      }
  
      public RequestLoadHistory() {
  
      }
  
      @NotNull
      public ApiOutPeer getPeer() {
          return this.peer;
      }
  
      public long getDate() {
          return this.date;
      }
  
      @Nullable
      public ApiListLoadMode getLoadMode() {
          return this.loadMode;
      }
  
      public int getLimit() {
          return this.limit;
      }
  
      @NotNull
      public List<ApiUpdateOptimization> getOptimizations() {
          return this.optimizations;
      }
  
      @Override
      public void parse(BserValues values) throws IOException {
          this.peer = values.getObj(1, new ApiOutPeer());
          this.date = values.getLong(3);
          int val_loadMode = values.getInt(5, 0);
          if (val_loadMode != 0) {
              this.loadMode = ApiListLoadMode.parse(val_loadMode);
          }
          this.limit = values.getInt(4);
          this.optimizations = new ArrayList<ApiUpdateOptimization>();
          for (int b : values.getRepeatedInt(6)) {
              optimizations.add(ApiUpdateOptimization.parse(b));
          }
      }
  
      @Override
      public void serialize(BserWriter writer) throws IOException {
          if (this.peer == null) {
              throw new IOException();
          }
          writer.writeObject(1, this.peer);
          writer.writeLong(3, this.date);
          if (this.loadMode != null) {
              writer.writeInt(5, this.loadMode.getValue());
          }
          writer.writeInt(4, this.limit);
          for (ApiUpdateOptimization i : this.optimizations) {
              writer.writeInt(6, i.getValue());
          }
      }
  
      @Override
      public String toString() {
          String res = "rpc LoadHistory{";
          res += "peer=" + this.peer;
          res += ", date=" + this.date;
          res += ", loadMode=" + this.loadMode;
          res += ", limit=" + this.limit;
          res += ", optimizations=" + this.optimizations;
          res += "}";
          return res;
      }
  
      @Override
      public int getHeaderKey() {
          return HEADER;
      }
  }
  