class EvpnAddressFamily extends AddressFamily {

  @Override
  public boolean equals(@Nullable Object o) {
    if (this == o) {
      return true;
    }
    if (!(o instanceof EvpnAddressFamily)) {
      return false;
    }
    EvpnAddressFamily that = (EvpnAddressFamily) o;
    return _addressFamilyCapabilities.equals(that._addressFamilyCapabilities)
        && Objects.equals(_exportPolicy, that._exportPolicy)
        && Objects.equals(_importPolicy, that._importPolicy)
        && _exportPolicySources.equals(that._exportPolicySources)
        && _importPolicySources.equals(that._importPolicySources)
        && _routeReflectorClient == that._routeReflectorClient
        // local fields
        && _l2VNIs.equals(that._l2VNIs)
        && _l3VNIs.equals(that._l3VNIs)
        && _propagateUnmatched == that._propagateUnmatched;
  }

  protected  EvpnAddressFamily(
      // super fields
      AddressFamilyCapabilities addressFamilyCapabilities,
      @Nullable String exportPolicy,
      SortedSet<String> exportPolicySources,
      @Nullable String importPolicy,
      SortedSet<String> importPolicySources,
      boolean routeReflectorClient,
      // local fields
      Set<Layer2VniConfig> l2Vnis,
      Set<Layer3VniConfig> l3Vnis,
      boolean propagateUnmatched);

}