internal static unsafe ServiceGroupDescription CreateFromNative(NativeClient.IFabricServiceGroupDescriptionResult nativeResult)
        {
            if (nativeResult == null)
            {
                return(null);
            }

            var nativeDescription        = (NativeTypes.FABRIC_SERVICE_GROUP_DESCRIPTION *)nativeResult.get_Description();
            var nativeServiceDescription = (NativeTypes.FABRIC_SERVICE_DESCRIPTION *)nativeDescription->Description;

            ServiceDescription serviceDescription = ServiceDescription.CreateFromNative(nativeDescription->Description);

            bool isStateful = (serviceDescription.Kind == ServiceDescriptionKind.Stateful);

            ServiceGroupDescription description = new ServiceGroupDescription(serviceDescription);

            var members = (NativeTypes.FABRIC_SERVICE_GROUP_MEMBER_DESCRIPTION *)nativeDescription->MemberDescriptions;

            for (int i = 0; i < nativeDescription->MemberCount; ++i)
            {
                var memberDescription = ServiceGroupMemberDescription.CreateFromNative((IntPtr)(members + i), isStateful);
                description.MemberDescriptions.Add(memberDescription);
            }

            GC.KeepAlive(nativeResult);

            return(description);
        }
 internal static void Validate(ServiceGroupDescription description)
 {
     Requires.Argument <ServiceDescription>("ServiceDescription", description.ServiceDescription).NotNull();
     ServiceDescription.Validate(description.ServiceDescription);
     foreach (ServiceGroupMemberDescription memberDescription in description.MemberDescriptions)
     {
         ServiceGroupMemberDescription.Validate(memberDescription);
     }
 }