/// <summary>
        /// Whether the <see cref="RaycastResultState"/> represents a successful raycast hit.
        /// </summary>
        /// <param name="state">The <see cref="RaycastResultState"/> being extended.</param>
        /// <returns><c>true</c> if <paramref name="state"/> represents a successful raycast hit (i.e.,
        /// <see cref="RaycastResultState.SuccessHitObserved"/> or
        /// <see cref="RaycastResultState.SuccessHitUnobserved"/>) otherwise <c>false</c>.</returns>
        public static bool Success(this RaycastResultState state)
        {
            switch (state)
            {
            case RaycastResultState.SuccessHitUnobserved:
            case RaycastResultState.SuccessHitObserved:
                return(true);

            default:
                return(false);
            }
        }
 /// <summary>
 /// Whether the <see cref="RaycastResultState"/> represents an error condition.
 /// </summary>
 /// <param name="state">The <see cref="RaycastResultState"/> being extended.</param>
 /// <returns><c>true</c> if the <see cref="Success"/> returns <c>false</c>.</returns>
 public static bool Error(this RaycastResultState state)
 {
     return(Done(state) && !Success(state));
 }
 /// <summary>
 /// Whether the <see cref="RaycastResultState"/> has completed or not.
 /// </summary>
 /// <param name="state">The <see cref="RaycastResultState"/> being extended.</param>
 /// <returns><c>true</c> if <paramref name="state"/> is not
 /// <see cref="RaycastResultState.Pending"/>.
 /// </returns>
 public static bool Done(this RaycastResultState state)
 {
     return(state != RaycastResultState.Pending);
 }