unsafe void IOperatorDescriptionMarshal.__MarshalFree(ref IntPtr pDesc)
    {
        var @ref = (__Native *)pDesc;

        InputParametersTensor.__MarshalFree(ref @ref->InputParametersTensor);
        InputFirstMomentTensor.__MarshalFree(ref @ref->InputFirstMomentTensor);
        InputSecondMomentTensor.__MarshalFree(ref @ref->InputSecondMomentTensor);
        GradientTensor.__MarshalFree(ref @ref->GradientTensor);
        TrainingStepTensor.__MarshalFree(ref @ref->TrainingStepTensor);
        OutputParametersTensor.__MarshalFree(ref @ref->OutputParametersTensor);
        OutputFirstMomentTensor.__MarshalFree(ref @ref->OutputFirstMomentTensor);
        OutputSecondMomentTensor.__MarshalFree(ref @ref->OutputSecondMomentTensor);

        UnsafeUtilities.Free(@ref);
    }
    unsafe IntPtr IOperatorDescriptionMarshal.__MarshalAlloc()
    {
        __Native * @ref = UnsafeUtilities.Alloc <__Native>();

        @ref->InputParametersTensor    = InputParametersTensor.__MarshalAlloc();
        @ref->InputFirstMomentTensor   = InputFirstMomentTensor.__MarshalAlloc();
        @ref->InputSecondMomentTensor  = InputSecondMomentTensor.__MarshalAlloc();
        @ref->GradientTensor           = GradientTensor.__MarshalAlloc();
        @ref->TrainingStepTensor       = TrainingStepTensor.__MarshalAlloc();
        @ref->OutputParametersTensor   = OutputParametersTensor.__MarshalAlloc();
        @ref->OutputFirstMomentTensor  = OutputFirstMomentTensor.__MarshalAlloc();
        @ref->OutputSecondMomentTensor = OutputSecondMomentTensor.__MarshalAlloc();
        @ref->LearningRate             = LearningRate;
        @ref->Beta1   = Beta1;
        @ref->Beta2   = Beta2;
        @ref->Epsilon = Epsilon;

        return(new(@ref));
    }