public boolean matches(PersistentMemberID id) {
    if (id == null) {
      return false;
    }
    boolean matches = true;
    matches &= host == null || host.equals(id.getHost());
    matches &= directory == null || directory.equals(id.getDirectory());
    matches &= diskStoreID == null
        || id.getDiskStoreId().getMostSignificantBits() == diskStoreID.getMostSignificantBits()
            && id.getDiskStoreId().getLeastSignificantBits() == diskStoreID
                .getLeastSignificantBits();

    // Safety measure. Id's which are generated after this pattern was revoked
    // should not be revoked. For example, if someone loses the disk for server A
    // They may revoke the pattern host==A. But A will start and generate a new ID
    // if they then close the region everywhere and then reopen it, we don't want
    // the new pattern to be revoked.
    if (diskStoreID == null) {
      matches &= revokedTime > id.getTimeStamp();
    }
    return matches;
  }
Implementation of the public PersistentID. It holds the region, host, directory, and timestamp.

This class also is also used to describe members that the user has revoked. Any fields that are
null will be considered a wildcard matching any members.

@since GemFire prPersistSprint1
geode-core/src/main/java/org/apache/geode/internal/cache/persistence/PersistentMemberPattern.java