/// <summary>
        /// Whether the serialization request completed with an error.
        /// </summary>
        /// <param name="status">The <see cref="ARWorldMapRequestStatus"/> being extended.</param>
        /// <returns><c>true</c> if <paramref name="status"/> indicates an error status.</returns>
        public static bool IsError(this ARWorldMapRequestStatus status)
        {
            switch (status)
            {
            case ARWorldMapRequestStatus.Pending:
            case ARWorldMapRequestStatus.Success:
                return(false);

            default:
                return(true);
            }
        }
        static unsafe void OnAsyncConversionComplete(ARWorldMapRequestStatus status, int worldMapId, IntPtr context)
        {
            var handle     = GCHandle.FromIntPtr(context);
            var onComplete = (Action <ARWorldMapRequestStatus, ARWorldMap>)handle.Target;

            if (status.IsError())
            {
                onComplete(status, default(ARWorldMap));
            }
            else
            {
                var worldMap = new ARWorldMap(worldMapId);
                onComplete(status, worldMap);
            }

            handle.Free();
        }
 /// <summary>
 /// Whether the serialization request is complete. <c>IsDone</c> does not mean the
 /// request completed successfully. See <see cref="HasError(ARWorldMapRequestStatus)"/>.
 /// </summary>
 /// <param name="status">The <see cref="ARWorldMapRequestStatus"/> being extended.</param>
 /// <returns><c>true</c> if <paramref name="status"/> indicates the request has completed.</returns>
 public static bool IsDone(this ARWorldMapRequestStatus status)
 {
     return(status != ARWorldMapRequestStatus.Pending);
 }