public InternalDistributedMember getDistributedMember(KnownVersion targetVersion) {
    KnownVersion disVersion = null;
    if (targetVersion.isOlderThan(KnownVersion.GEODE_1_1_0)) {
      // clients expect to receive UUID bytes, which are only
      // read if the stream's version is 1.0.0-incubating
      disVersion = KnownVersion.GFE_90;
    }
    InternalDistributedMember result = null;
    try (ByteArrayDataInput dis = new ByteArrayDataInput(membershipID, disVersion)) {
      result = InternalDistributedMember.readEssentialData(dis);
    } catch (IOException e) {
      // nothing can be done about this
    } catch (ClassNotFoundException e) {
      // ditto
    }
    return result;
  }
deserialize the memberID bytes using the given version. The correct thing to do would be to
have EventID carry the version ordinal of the serialized memberID, or to have it be part of the
memberID bytes and use that version to deserialize the bytes. Clients prior to 1.1.0 need to
have UUID bytes in the memberID. Newer clients don't require this.
geode-core/src/main/java/org/apache/geode/internal/cache/EventID.java