public static Landmark[] PtrToLandmarkArray(MpLandmarkList landmarkListPtr)
        {
            var landmarkList = Marshal.PtrToStructure <LandmarkList>(landmarkListPtr);
            var landmarks    = new Landmark[landmarkList.size];

            unsafe {
                Landmark *landmarkPtr = (Landmark *)landmarkList.landmarks;

                for (var i = 0; i < landmarkList.size; i++)
                {
                    landmarks[i] = Marshal.PtrToStructure <Landmark>((IntPtr)landmarkPtr++);
                }
            }

            return(landmarks);
        }
        public static List <Landmark[]> PtrToLandmarkArrayList(MpLandmarkListVector landmarkListVecPtr)
        {
            var landmarkListVector = Marshal.PtrToStructure <LandmarkListVector>(landmarkListVecPtr);
            var landmarks          = new List <Landmark[]>(landmarkListVector.size);

            unsafe {
                int *     sizePtr     = (int *)landmarkListVector.sizeList;
                Landmark *landmarkPtr = (Landmark *)landmarkListVector.landmarks;

                for (var i = 0; i < landmarkListVector.size; i++)
                {
                    int size = *sizePtr++;
                    landmarks.Add(new Landmark[size]);

                    for (var j = 0; j < size; j++)
                    {
                        landmarks[i][j] = Marshal.PtrToStructure <Landmark>((IntPtr)landmarkPtr++);
                    }
                }
            }

            return(landmarks);
        }