internal static unsafe RestartPartitionDescription CreateFromNative(IntPtr nativeRaw)
        {
            NativeTypes.FABRIC_START_PARTITION_RESTART_DESCRIPTION native = *(NativeTypes.FABRIC_START_PARTITION_RESTART_DESCRIPTION *)nativeRaw;

            Guid operationId = native.OperationId;

            NativeTypes.FABRIC_PARTITION_SELECTOR nativePartitionSelector = *(NativeTypes.FABRIC_PARTITION_SELECTOR *)native.PartitionSelector;

            PartitionSelector partitionSelector =
                PartitionSelector.CreateFromNative(nativePartitionSelector);

            return(new RestartPartitionDescription(operationId, partitionSelector, (RestartPartitionMode)native.RestartPartitionMode));
        }
        internal IntPtr ToNative(PinCollection pinCollection)
        {
            var nativeRestartPartitionDescription = new NativeTypes.FABRIC_START_PARTITION_RESTART_DESCRIPTION();

            nativeRestartPartitionDescription.OperationId = this.OperationId;

            if (this.PartitionSelector != null)
            {
                nativeRestartPartitionDescription.PartitionSelector = this.PartitionSelector.ToNative(pinCollection);
            }

            nativeRestartPartitionDescription.RestartPartitionMode = (NativeTypes.FABRIC_RESTART_PARTITION_MODE) this.RestartPartitionMode;

            return(pinCollection.AddBlittable(nativeRestartPartitionDescription));
        }