public void TrampolineRecursion_CreatesThreeStackFrameForTrampolineExecuteAndTrampolineBounceAndTrampolineResult(int recursions)
        {
            var stackTrace         = new StackTrace();
            var startingFrameCount = stackTrace.FrameCount;

            var endingFrameCount   = Trampoline.Execute(() => TrampolineRecursive(recursions)).frameCount;
            var amountOfFramesUsed = endingFrameCount - startingFrameCount;

            amountOfFramesUsed.Should().Be(3);
        }
        /// <summary>
        /// Finds and returns the deepest inner exception found in the provided exception object.
        /// </summary>
        /// <param name="exception">A <see cref="Exception"/> object to retrieve the innermost exception from.</param>
        /// <returns>The innermost <see cref="Exception"/> object found in <c>exception</c>.</returns>
        public static Exception FindInnermostException(this Exception exception)
        {
            Require.NotNull(exception, nameof(exception));

            return(Trampoline.Execute(ExceptionDelver, exception));