class CompletionMetadata implements Serializable {

  @Override
  public boolean equals(@Nullable Object obj) {
    if (this == obj) {
      return true;
    }
    if (!(obj instanceof CompletionMetadata)) {
      return false;
    }
    CompletionMetadata rhs = (CompletionMetadata) obj;
    return _filterNames.equals(rhs._filterNames)
        && _interfaces.equals(rhs._interfaces)
        && _ips.equals(rhs._ips)
        && _sourceLocations.equals(rhs._sourceLocations)
        && _mlagIds.equals(rhs._mlagIds)
        && _nodes.equals(rhs._nodes)
        && _prefixes.equals(rhs._prefixes)
        && _routingPolicyNames.equals(rhs._routingPolicyNames)
        && _structureNames.equals(rhs._structureNames)
        && _vrfs.equals(rhs._vrfs)
        && _zones.equals(rhs._zones);
  }

  public  CompletionMetadata(
      Set<String> filterNames,
      Set<NodeInterfacePair> interfaces,
      Map<Ip, IpCompletionMetadata> ips,
      Set<Location> sourceLocations,
      Set<String> mlagIds,
      Map<String, NodeCompletionMetadata> nodes,
      Set<String> prefixes,
      Set<String> routingPolicyNames,
      Set<String> structureNames,
      Set<String> vrfs,
      Set<String> zones);

}