@Override
  public boolean equals(Object obj) {
    if (this == obj) {
      return true;
    }
    if (obj == null) {
      return false;
    }
    if (getClass() != obj.getClass()) {
      return false;
    }
    VersionTag<?> other = (VersionTag<?>) obj;
    if (entryVersion != other.entryVersion) {
      return false;
    }
    if (memberID == null) {
      if (other.memberID != null) {
        return false;
      }
    } else if (!memberID.equals(other.memberID)) {
      return false;
    }
    if (regionVersionHighBytes != other.regionVersionHighBytes) {
      return false;
    }
    if (regionVersionLowBytes != other.regionVersionLowBytes) {
      return false;
    }
    if (isGatewayTag() != other.isGatewayTag()) {
      return false;
    }
    if (isGatewayTag()) {
      if (timeStamp != other.timeStamp) {
        return false;
      }
      return distributedSystemId == other.distributedSystemId;
    }
    return true;
  }
Creates a version tag of the appropriate type, based on the member id
geode-core/src/main/java/org/apache/geode/internal/cache/versions/VersionTag.java