PipelineComponent
Represents a single component of a resilience pipeline.
            
                using System;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
namespace Polly.Utils.Pipeline
{
    [NullableContext(1)]
    [Nullable(0)]
    internal abstract class PipelineComponent : IAsyncDisposable
    {
        [NullableContext(0)]
        private sealed class NullComponent : PipelineComponent
        {
            [NullableContext(1)]
            [return: Nullable(new byte[] {
                0,
                0,
                1
            })]
            internal override ValueTask<Outcome<TResult>> ExecuteCore<[Nullable(2)] TResult, [Nullable(2)] TState>([Nullable(new byte[] {
                1,
                1,
                1,
                0,
                0,
                1
            })] Func<ResilienceContext, TState, ValueTask<Outcome<TResult>>> callback, ResilienceContext context, TState state)
            {
                return callback(context, state);
            }
            public override ValueTask DisposeAsync()
            {
                return default(ValueTask);
            }
        }
        public static PipelineComponent Empty { get; } = new NullComponent();
        [Nullable(2)]
        [field: Nullable(2)]
        internal ResilienceStrategyOptions Options {
            [NullableContext(2)]
            get;
            [NullableContext(2)]
            set;
        }
        [return: Nullable(new byte[] {
            0,
            0,
            1
        })]
        internal abstract ValueTask<Outcome<TResult>> ExecuteCore<[Nullable(2)] TResult, [Nullable(2)] TState>([Nullable(new byte[] {
            1,
            1,
            1,
            0,
            0,
            1
        })] Func<ResilienceContext, TState, ValueTask<Outcome<TResult>>> callback, ResilienceContext context, TState state);
        [return: Nullable(new byte[] {
            0,
            1
        })]
        internal Outcome<TResult> ExecuteCoreSync<[Nullable(2)] TResult, [Nullable(2)] TState>([Nullable(new byte[] {
            1,
            1,
            1,
            0,
            1
        })] Func<ResilienceContext, TState, Outcome<TResult>> callback, ResilienceContext context, TState state)
        {
            return ExecuteCore((ResilienceContext context, (Func<ResilienceContext, TState, Outcome<TResult>> callbackMethod, TState stateObject) state) => new ValueTask<Outcome<TResult>>(state.callbackMethod(context, state.stateObject)), context, (callback, state)).GetResult();
        }
        public abstract ValueTask DisposeAsync();
    }
}