class IpWildcard implements Serializable, Comparable<IpWildcard> {

  public boolean supersetOf(IpWildcard other) {
    long wildToThis = _wildcardMask;
    long wildToOther = other._wildcardMask;
    long differentIpBits = _ip.asLong() ^ other._ip.asLong();

    /*
     * 1. Any bits wild in other must be wild in this (i.e. other's wild bits must be a subset
     *    of this' wild bits).
     * 2. Any IP bits that differ must be wild in this.
     */
    return (wildToThis & wildToOther) == wildToOther
        && (wildToThis & differentIpBits) == differentIpBits;
  }

  private  IpWildcard(Ip address, long wildcardMask);

}