class Device implements Serializable {

  @Override
  public boolean equals(@Nullable Object obj) {
    if (this == obj) {
      return true;
    }
    if (!(obj instanceof Device)) {
      return false;
    }
    Device rhs = (Device) obj;
    return Objects.equals(_baseMac, rhs._baseMac)
        && Objects.equals(_configSyncIp, rhs._configSyncIp)
        && Objects.equals(_hostname, rhs._hostname)
        && Objects.equals(_managementIp, rhs._managementIp)
        && _name.equals(rhs._name)
        && Objects.equals(_selfDevice, rhs._selfDevice)
        && _unicastAddresses.equals(rhs._unicastAddresses);
  }

  public  Device(
      @Nullable MacAddress baseMac,
      @Nullable Ip configSyncIp,
      @Nullable String hostname,
      @Nullable Ip managementIp,
      String name,
      @Nullable Boolean selfDevice,
      List<UnicastAddress> unicastAddresses);

}