BridgeComponent<T>
using System;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
namespace Polly.Utils.Pipeline
{
    [System.Runtime.CompilerServices.NullableContext(1)]
    [System.Runtime.CompilerServices.Nullable(0)]
    [DebuggerDisplay("{Strategy}")]
    internal sealed class BridgeComponent<[System.Runtime.CompilerServices.Nullable(2)] T> : BridgeComponentBase
    {
        public ResilienceStrategy<T> Strategy { get; }
        public BridgeComponent(ResilienceStrategy<T> strategy)
            : base(strategy)
        {
            Strategy = strategy;
        }
        [return: System.Runtime.CompilerServices.Nullable(new byte[] {
            0,
            0,
            1
        })]
        internal override ValueTask<Outcome<TResult>> ExecuteCore<[System.Runtime.CompilerServices.Nullable(2)] TResult, [System.Runtime.CompilerServices.Nullable(2)] TState>([System.Runtime.CompilerServices.Nullable(new byte[] {
            1,
            1,
            1,
            0,
            0,
            1
        })] Func<ResilienceContext, TState, ValueTask<Outcome<TResult>>> callback, ResilienceContext context, TState state)
        {
            Func<ResilienceContext, TState, ValueTask<Outcome<T>>> func = callback as Func<ResilienceContext, TState, ValueTask<Outcome<T>>>;
            if (func != null)
                return ConvertValueTask<TResult>(this.Strategy.ExecuteCore(func, context, state), context);
            return ConvertValueTask<TResult>(this.Strategy.ExecuteCore(delegate(ResilienceContext context, (Func<ResilienceContext, TState, ValueTask<Outcome<TResult>>> callback, TState state) state) {
                <>c__4<TResult, TState>.<<ExecuteCore>b__4_0>d stateMachine = default(<>c__4<TResult, TState>.<<ExecuteCore>b__4_0>d);
                stateMachine.<>t__builder = AsyncValueTaskMethodBuilder<Outcome<T>>.Create();
                stateMachine.context = context;
                stateMachine.state = state;
                stateMachine.<>1__state = -1;
                stateMachine.<>t__builder.Start(ref stateMachine);
                return stateMachine.<>t__builder.Task;
            }, context, (callback, state)), context);
        }
        [return: System.Runtime.CompilerServices.Nullable(new byte[] {
            0,
            0,
            1
        })]
        private static ValueTask<Outcome<TTo>> ConvertValueTask<[System.Runtime.CompilerServices.Nullable(2)] TTo>([System.Runtime.CompilerServices.Nullable(new byte[] {
            0,
            0,
            1
        })] ValueTask<Outcome<T>> valueTask, ResilienceContext resilienceContext)
        {
            if (valueTask.IsCompletedSuccessfully)
                return new ValueTask<Outcome<TTo>>(ConvertOutcome<T, TTo>(valueTask.Result));
            return <ConvertValueTask>g__ConvertValueTaskAsync|5_0<TTo>(valueTask, resilienceContext);
        }
        [System.Runtime.CompilerServices.NullableContext(2)]
        [return: System.Runtime.CompilerServices.Nullable(new byte[] {
            0,
            1
        })]
        private static Outcome<TTo> ConvertOutcome<TFrom, TTo>([System.Runtime.CompilerServices.Nullable(new byte[] {
            0,
            1
        })] Outcome<TFrom> outcome)
        {
            if (outcome.ExceptionDispatchInfo != null)
                return new Outcome<TTo>(outcome.ExceptionDispatchInfo);
            if (outcome.Result == null)
                return new Outcome<TTo>(default(TTo));
            if (typeof(TTo) == typeof(TFrom)) {
                TFrom source = outcome.Result;
                return new Outcome<TTo>(Unsafe.As<TFrom, TTo>(ref source));
            }
            return new Outcome<TTo>((TTo)(object)outcome.Result);
        }
    }
}