class UnicastAddress implements Serializable {

  @Override
  public boolean equals(@Nullable Object obj) {
    if (this == obj) {
      return true;
    }
    if (!(obj instanceof UnicastAddress)) {
      return false;
    }
    UnicastAddress rhs = (UnicastAddress) obj;
    return Objects.equals(_effectiveIp, rhs._effectiveIp)
        && _effectivePort == rhs._effectivePort
        && Objects.equals(_ip, rhs._ip)
        && Objects.equals(_port, rhs._port);
  }

  private  UnicastAddress(
      @Nullable UnicastAddressIp effectiveIp,
      int effectivePort,
      @Nullable UnicastAddressIp ip,
      @Nullable Integer port);

}