There is not really a need for separate MemberIdentifier and MemberData interfaces. We should combine these two interfaces into a single interface. MemberIdentiferImpl and GMSMemberData should also be combined into a single object.
InternalDistributedMember should probably wrap a MemberIdentifier, rather than extend MemberIdentifierImpl, for better encapsulation. If MemberIdentifer takes on all of the methods of MemberData this should be possible.