byte[] serializeMessage(Message<ID> gfmsg, BufferDataOutputStream out_stream)
      throws IOException {
    ID m = localAddress;
    m.getMemberData().writeEssentialData(out_stream,
        services.getSerializer().createSerializationContext(out_stream));
    services.getSerializer().getObjectSerializer()
        .writeObject(gfmsg, out_stream);

    return out_stream.toByteArray();
  }
This is the constructor to use to create a JGroups message holding a GemFire
DistributionMessage. It sets the appropriate flags in the Message and properly serializes the
DistributionMessage for the recipient's product version

@param gfmsg the DistributionMessage
@param src the sender address
@param versionOrdinal the version of the recipient
@return the new message
geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessenger.java