internal override IntPtr ToNative(PinCollection pin, out NativeTypes.FABRIC_NODE_TRANSITION_TYPE nodeTransitionType)
        {
            var nativeDescription = new NativeTypes.FABRIC_NODE_STOP_DESCRIPTION();

            nativeDescription.OperationId = this.OperationId;

            nativeDescription.NodeName              = pin.AddBlittable(this.NodeName);
            nativeDescription.NodeInstanceId        = (ulong)this.NodeInstanceId;
            nativeDescription.StopDurationInSeconds = (uint)this.StopDurationInSeconds;

            nativeDescription.Reserved = IntPtr.Zero;

            nodeTransitionType = NativeTypes.FABRIC_NODE_TRANSITION_TYPE.FABRIC_NODE_TRANSITION_TYPE_STOP;
            return(pin.AddBlittable(nativeDescription));
        }
        internal static new unsafe NodeStopDescription CreateFromNative(IntPtr nativeRaw)
        {
            ReleaseAssert.AssertIfNot(nativeRaw != IntPtr.Zero, StringResources.Error_NullNativePointer);

            NativeTypes.FABRIC_NODE_STOP_DESCRIPTION native = *(NativeTypes.FABRIC_NODE_STOP_DESCRIPTION *)nativeRaw;

            Guid       operationId    = native.OperationId;
            string     nodeName       = NativeTypes.FromNativeString(native.NodeName);
            BigInteger nodeInstanceId = new BigInteger(native.NodeInstanceId);

            uint     durationInSeconds = native.StopDurationInSeconds;
            TimeSpan duration          = TimeSpan.FromSeconds(durationInSeconds);

            NodeStopDescription description = new NodeStopDescription(operationId, nodeName, nodeInstanceId, (int)duration.TotalSeconds);

            return(description);
        }