// Code generated by Wire protocol buffer compiler, do not edit.
// Source: squareup.proto3.MapTypes in map_types.proto
package squareup.proto3;

import com.squareup.wire.Message;
import com.squareup.wire.ProtoAdapter;
import com.squareup.wire.Syntax;
import com.squareup.wire.WireField;
import com.squareup.wire.internal.Internal;
import java.lang.Integer;
import java.lang.Long;
import java.lang.Object;
import java.lang.Override;
import java.lang.String;
import java.util.Map;
import okio.ByteString;

public final class MapTypes extends Message<MapTypes, MapTypes.Builder> {
  public static final ProtoAdapter<MapTypes> ADAPTER = ProtoAdapter.newMessageAdapter(MapTypes.class, "type.googleapis.com/squareup.proto3.MapTypes", Syntax.PROTO_3);

  private static final long serialVersionUID = 0L;

  @WireField(
      tag = 1,
      keyAdapter = "com.squareup.wire.ProtoAdapter#STRING",
      adapter = "com.squareup.wire.ProtoAdapter#STRING",
      jsonName = "mapStringString"
  )
  public final Map<String, String> map_string_string;

  @WireField(
      tag = 2,
      keyAdapter = "com.squareup.wire.ProtoAdapter#INT32",
      adapter = "com.squareup.wire.ProtoAdapter#INT32",
      jsonName = "mapInt32Int32"
  )
  public final Map<Integer, Integer> map_int32_int32;

  @WireField(
      tag = 3,
      keyAdapter = "com.squareup.wire.ProtoAdapter#SINT32",
      adapter = "com.squareup.wire.ProtoAdapter#SINT32",
      jsonName = "mapSint32Sint32"
  )
  public final Map<Integer, Integer> map_sint32_sint32;

  @WireField(
      tag = 4,
      keyAdapter = "com.squareup.wire.ProtoAdapter#SFIXED32",
      adapter = "com.squareup.wire.ProtoAdapter#SFIXED32",
      jsonName = "mapSfixed32Sfixed32"
  )
  public final Map<Integer, Integer> map_sfixed32_sfixed32;

  @WireField(
      tag = 5,
      keyAdapter = "com.squareup.wire.ProtoAdapter#FIXED32",
      adapter = "com.squareup.wire.ProtoAdapter#FIXED32",
      jsonName = "mapFixed32Fixed32"
  )
  public final Map<Integer, Integer> map_fixed32_fixed32;

  @WireField(
      tag = 6,
      keyAdapter = "com.squareup.wire.ProtoAdapter#UINT32",
      adapter = "com.squareup.wire.ProtoAdapter#UINT32",
      jsonName = "mapUint32Uint32"
  )
  public final Map<Integer, Integer> map_uint32_uint32;

  @WireField(
      tag = 7,
      keyAdapter = "com.squareup.wire.ProtoAdapter#INT64",
      adapter = "com.squareup.wire.ProtoAdapter#INT64",
      jsonName = "mapInt64Int64"
  )
  public final Map<Long, Long> map_int64_int64;

  @WireField(
      tag = 8,
      keyAdapter = "com.squareup.wire.ProtoAdapter#SFIXED64",
      adapter = "com.squareup.wire.ProtoAdapter#SFIXED64",
      jsonName = "mapSfixed64Sfixed64"
  )
  public final Map<Long, Long> map_sfixed64_sfixed64;

  @WireField(
      tag = 9,
      keyAdapter = "com.squareup.wire.ProtoAdapter#SINT64",
      adapter = "com.squareup.wire.ProtoAdapter#SINT64",
      jsonName = "mapSint64Sint64"
  )
  public final Map<Long, Long> map_sint64_sint64;

  @WireField(
      tag = 10,
      keyAdapter = "com.squareup.wire.ProtoAdapter#FIXED64",
      adapter = "com.squareup.wire.ProtoAdapter#FIXED64",
      jsonName = "mapFixed64Fixed64"
  )
  public final Map<Long, Long> map_fixed64_fixed64;

  @WireField(
      tag = 11,
      keyAdapter = "com.squareup.wire.ProtoAdapter#UINT64",
      adapter = "com.squareup.wire.ProtoAdapter#UINT64",
      jsonName = "mapUint64Uint64"
  )
  public final Map<Long, Long> map_uint64_uint64;

  public MapTypes(Map<String, String> map_string_string, Map<Integer, Integer> map_int32_int32,
      Map<Integer, Integer> map_sint32_sint32, Map<Integer, Integer> map_sfixed32_sfixed32,
      Map<Integer, Integer> map_fixed32_fixed32, Map<Integer, Integer> map_uint32_uint32,
      Map<Long, Long> map_int64_int64, Map<Long, Long> map_sfixed64_sfixed64,
      Map<Long, Long> map_sint64_sint64, Map<Long, Long> map_fixed64_fixed64,
      Map<Long, Long> map_uint64_uint64) {
    this(map_string_string, map_int32_int32, map_sint32_sint32, map_sfixed32_sfixed32, map_fixed32_fixed32, map_uint32_uint32, map_int64_int64, map_sfixed64_sfixed64, map_sint64_sint64, map_fixed64_fixed64, map_uint64_uint64, ByteString.EMPTY);
  }

  public MapTypes(Map<String, String> map_string_string, Map<Integer, Integer> map_int32_int32,
      Map<Integer, Integer> map_sint32_sint32, Map<Integer, Integer> map_sfixed32_sfixed32,
      Map<Integer, Integer> map_fixed32_fixed32, Map<Integer, Integer> map_uint32_uint32,
      Map<Long, Long> map_int64_int64, Map<Long, Long> map_sfixed64_sfixed64,
      Map<Long, Long> map_sint64_sint64, Map<Long, Long> map_fixed64_fixed64,
      Map<Long, Long> map_uint64_uint64, ByteString unknownFields) {
    super(ADAPTER, unknownFields);
    this.map_string_string = Internal.immutableCopyOf("map_string_string", map_string_string);
    this.map_int32_int32 = Internal.immutableCopyOf("map_int32_int32", map_int32_int32);
    this.map_sint32_sint32 = Internal.immutableCopyOf("map_sint32_sint32", map_sint32_sint32);
    this.map_sfixed32_sfixed32 = Internal.immutableCopyOf("map_sfixed32_sfixed32", map_sfixed32_sfixed32);
    this.map_fixed32_fixed32 = Internal.immutableCopyOf("map_fixed32_fixed32", map_fixed32_fixed32);
    this.map_uint32_uint32 = Internal.immutableCopyOf("map_uint32_uint32", map_uint32_uint32);
    this.map_int64_int64 = Internal.immutableCopyOf("map_int64_int64", map_int64_int64);
    this.map_sfixed64_sfixed64 = Internal.immutableCopyOf("map_sfixed64_sfixed64", map_sfixed64_sfixed64);
    this.map_sint64_sint64 = Internal.immutableCopyOf("map_sint64_sint64", map_sint64_sint64);
    this.map_fixed64_fixed64 = Internal.immutableCopyOf("map_fixed64_fixed64", map_fixed64_fixed64);
    this.map_uint64_uint64 = Internal.immutableCopyOf("map_uint64_uint64", map_uint64_uint64);
  }

  @Override
  public Builder newBuilder() {
    Builder builder = new Builder();
    builder.map_string_string = Internal.copyOf(map_string_string);
    builder.map_int32_int32 = Internal.copyOf(map_int32_int32);
    builder.map_sint32_sint32 = Internal.copyOf(map_sint32_sint32);
    builder.map_sfixed32_sfixed32 = Internal.copyOf(map_sfixed32_sfixed32);
    builder.map_fixed32_fixed32 = Internal.copyOf(map_fixed32_fixed32);
    builder.map_uint32_uint32 = Internal.copyOf(map_uint32_uint32);
    builder.map_int64_int64 = Internal.copyOf(map_int64_int64);
    builder.map_sfixed64_sfixed64 = Internal.copyOf(map_sfixed64_sfixed64);
    builder.map_sint64_sint64 = Internal.copyOf(map_sint64_sint64);
    builder.map_fixed64_fixed64 = Internal.copyOf(map_fixed64_fixed64);
    builder.map_uint64_uint64 = Internal.copyOf(map_uint64_uint64);
    builder.addUnknownFields(unknownFields());
    return builder;
  }

  @Override
  public boolean equals(Object other) {
    if (other == this) return true;
    if (!(other instanceof MapTypes)) return false;
    MapTypes o = (MapTypes) other;
    return unknownFields().equals(o.unknownFields())
        && map_string_string.equals(o.map_string_string)
        && map_int32_int32.equals(o.map_int32_int32)
        && map_sint32_sint32.equals(o.map_sint32_sint32)
        && map_sfixed32_sfixed32.equals(o.map_sfixed32_sfixed32)
        && map_fixed32_fixed32.equals(o.map_fixed32_fixed32)
        && map_uint32_uint32.equals(o.map_uint32_uint32)
        && map_int64_int64.equals(o.map_int64_int64)
        && map_sfixed64_sfixed64.equals(o.map_sfixed64_sfixed64)
        && map_sint64_sint64.equals(o.map_sint64_sint64)
        && map_fixed64_fixed64.equals(o.map_fixed64_fixed64)
        && map_uint64_uint64.equals(o.map_uint64_uint64);
  }

  @Override
  public int hashCode() {
    int result = super.hashCode;
    if (result == 0) {
      result = unknownFields().hashCode();
      result = result * 37 + map_string_string.hashCode();
      result = result * 37 + map_int32_int32.hashCode();
      result = result * 37 + map_sint32_sint32.hashCode();
      result = result * 37 + map_sfixed32_sfixed32.hashCode();
      result = result * 37 + map_fixed32_fixed32.hashCode();
      result = result * 37 + map_uint32_uint32.hashCode();
      result = result * 37 + map_int64_int64.hashCode();
      result = result * 37 + map_sfixed64_sfixed64.hashCode();
      result = result * 37 + map_sint64_sint64.hashCode();
      result = result * 37 + map_fixed64_fixed64.hashCode();
      result = result * 37 + map_uint64_uint64.hashCode();
      super.hashCode = result;
    }
    return result;
  }

  public static final class Builder extends Message.Builder<MapTypes, Builder> {
    public Map<String, String> map_string_string;

    public Map<Integer, Integer> map_int32_int32;

    public Map<Integer, Integer> map_sint32_sint32;

    public Map<Integer, Integer> map_sfixed32_sfixed32;

    public Map<Integer, Integer> map_fixed32_fixed32;

    public Map<Integer, Integer> map_uint32_uint32;

    public Map<Long, Long> map_int64_int64;

    public Map<Long, Long> map_sfixed64_sfixed64;

    public Map<Long, Long> map_sint64_sint64;

    public Map<Long, Long> map_fixed64_fixed64;

    public Map<Long, Long> map_uint64_uint64;

    public Builder() {
      map_string_string = Internal.newMutableMap();
      map_int32_int32 = Internal.newMutableMap();
      map_sint32_sint32 = Internal.newMutableMap();
      map_sfixed32_sfixed32 = Internal.newMutableMap();
      map_fixed32_fixed32 = Internal.newMutableMap();
      map_uint32_uint32 = Internal.newMutableMap();
      map_int64_int64 = Internal.newMutableMap();
      map_sfixed64_sfixed64 = Internal.newMutableMap();
      map_sint64_sint64 = Internal.newMutableMap();
      map_fixed64_fixed64 = Internal.newMutableMap();
      map_uint64_uint64 = Internal.newMutableMap();
    }

    public Builder map_string_string(Map<String, String> map_string_string) {
      Internal.checkElementsNotNull(map_string_string);
      this.map_string_string = map_string_string;
      return this;
    }

    public Builder map_int32_int32(Map<Integer, Integer> map_int32_int32) {
      Internal.checkElementsNotNull(map_int32_int32);
      this.map_int32_int32 = map_int32_int32;
      return this;
    }

    public Builder map_sint32_sint32(Map<Integer, Integer> map_sint32_sint32) {
      Internal.checkElementsNotNull(map_sint32_sint32);
      this.map_sint32_sint32 = map_sint32_sint32;
      return this;
    }

    public Builder map_sfixed32_sfixed32(Map<Integer, Integer> map_sfixed32_sfixed32) {
      Internal.checkElementsNotNull(map_sfixed32_sfixed32);
      this.map_sfixed32_sfixed32 = map_sfixed32_sfixed32;
      return this;
    }

    public Builder map_fixed32_fixed32(Map<Integer, Integer> map_fixed32_fixed32) {
      Internal.checkElementsNotNull(map_fixed32_fixed32);
      this.map_fixed32_fixed32 = map_fixed32_fixed32;
      return this;
    }

    public Builder map_uint32_uint32(Map<Integer, Integer> map_uint32_uint32) {
      Internal.checkElementsNotNull(map_uint32_uint32);
      this.map_uint32_uint32 = map_uint32_uint32;
      return this;
    }

    public Builder map_int64_int64(Map<Long, Long> map_int64_int64) {
      Internal.checkElementsNotNull(map_int64_int64);
      this.map_int64_int64 = map_int64_int64;
      return this;
    }

    public Builder map_sfixed64_sfixed64(Map<Long, Long> map_sfixed64_sfixed64) {
      Internal.checkElementsNotNull(map_sfixed64_sfixed64);
      this.map_sfixed64_sfixed64 = map_sfixed64_sfixed64;
      return this;
    }

    public Builder map_sint64_sint64(Map<Long, Long> map_sint64_sint64) {
      Internal.checkElementsNotNull(map_sint64_sint64);
      this.map_sint64_sint64 = map_sint64_sint64;
      return this;
    }

    public Builder map_fixed64_fixed64(Map<Long, Long> map_fixed64_fixed64) {
      Internal.checkElementsNotNull(map_fixed64_fixed64);
      this.map_fixed64_fixed64 = map_fixed64_fixed64;
      return this;
    }

    public Builder map_uint64_uint64(Map<Long, Long> map_uint64_uint64) {
      Internal.checkElementsNotNull(map_uint64_uint64);
      this.map_uint64_uint64 = map_uint64_uint64;
      return this;
    }

    @Override
    public MapTypes build() {
      return new MapTypes(map_string_string, map_int32_int32, map_sint32_sint32, map_sfixed32_sfixed32, map_fixed32_fixed32, map_uint32_uint32, map_int64_int64, map_sfixed64_sfixed64, map_sint64_sint64, map_fixed64_fixed64, map_uint64_uint64, super.buildUnknownFields());
    }
  }
}
