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

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

            nativeDescription.Reserved = IntPtr.Zero;

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

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

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

            NodeStartDescription description = new NodeStartDescription(operationId, nodeName, nodeInstanceId);

            return(description);
        }