class VirtualAddress implements Serializable {

  @Override
  public boolean equals(@Nullable Object obj) {
    if (this == obj) {
      return true;
    }
    if (!(obj instanceof VirtualAddress)) {
      return false;
    }
    VirtualAddress rhs = (VirtualAddress) obj;
    return Objects.equals(_address, rhs._address)
        && Objects.equals(_address6, rhs._address6)
        && Objects.equals(_arpDisabled, rhs._arpDisabled)
        && Objects.equals(_icmpEchoDisabled, rhs._icmpEchoDisabled)
        && Objects.equals(_mask, rhs._mask)
        && Objects.equals(_mask6, rhs._mask6)
        && _name.equals(rhs._name)
        && Objects.equals(_routeAdvertisementMode, rhs._routeAdvertisementMode);
  }

  private  VirtualAddress(
      @Nullable Ip address,
      @Nullable Ip6 address6,
      @Nullable Boolean arpDisabled,
      @Nullable Boolean icmpEchoDisabled,
      @Nullable Ip mask,
      @Nullable Ip6 mask6,
      String name,
      @Nullable RouteAdvertisementMode routeAdvertisementMode);

}