class BgpPeerConfigId implements Comparable<BgpPeerConfigId> {

  @Override
  public int compareTo(@Nonnull BgpPeerConfigId o) {
    return Comparator.comparing(BgpPeerConfigId::getHostname)
        .thenComparing(BgpPeerConfigId::getVrfName)
        .thenComparing(BgpPeerConfigId::getType)
        .thenComparing(
            BgpPeerConfigId::getRemotePeerPrefix, Comparator.nullsLast(Prefix::compareTo))
        .thenComparing(
            BgpPeerConfigId::getPeerInterface, Comparator.nullsLast(Comparator.naturalOrder()))
        .compare(this, o);
  }

  public  BgpPeerConfigId(
      @Nonnull String hostname,
      @Nonnull String vrfName,
      @Nonnull Prefix remotePeerPrefix,
      boolean dynamic);
  public  BgpPeerConfigId(
      @Nonnull String hostname, @Nonnull String vrfName, @Nonnull String peerInterface);

}