AvroParser
using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.CompilerServices;
using System.Text.Json;
using System.Threading;
using System.Threading.Tasks;
namespace Azure.Storage.Internal.Avro
{
    internal static class AvroParser
    {
        [AsyncStateMachine(typeof(<ReadFixedBytesAsync>d__0))]
        public static Task<byte[]> ReadFixedBytesAsync(Stream stream, int length, bool async, CancellationToken cancellationToken)
        {
            <ReadFixedBytesAsync>d__0 stateMachine = default(<ReadFixedBytesAsync>d__0);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<byte[]>.Create();
            stateMachine.stream = stream;
            stateMachine.length = length;
            stateMachine.async = async;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        [AsyncStateMachine(typeof(<ReadByteAsync>d__1))]
        private static Task<byte> ReadByteAsync(Stream stream, bool async, CancellationToken cancellationToken)
        {
            <ReadByteAsync>d__1 stateMachine = default(<ReadByteAsync>d__1);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<byte>.Create();
            stateMachine.stream = stream;
            stateMachine.async = async;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        [AsyncStateMachine(typeof(<ReadZigZagLongAsync>d__2))]
        private static Task<long> ReadZigZagLongAsync(Stream stream, bool async, CancellationToken cancellationToken)
        {
            <ReadZigZagLongAsync>d__2 stateMachine = default(<ReadZigZagLongAsync>d__2);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<long>.Create();
            stateMachine.stream = stream;
            stateMachine.async = async;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        public static Task<object> ReadNullAsync()
        {
            return Task.FromResult<object>(null);
        }
        [AsyncStateMachine(typeof(<ReadBoolAsync>d__4))]
        public static Task<bool> ReadBoolAsync(Stream stream, bool async, CancellationToken cancellationToken)
        {
            <ReadBoolAsync>d__4 stateMachine = default(<ReadBoolAsync>d__4);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<bool>.Create();
            stateMachine.stream = stream;
            stateMachine.async = async;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        [AsyncStateMachine(typeof(<ReadLongAsync>d__5))]
        public static Task<long> ReadLongAsync(Stream stream, bool async, CancellationToken cancellationToken)
        {
            <ReadLongAsync>d__5 stateMachine = default(<ReadLongAsync>d__5);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<long>.Create();
            stateMachine.stream = stream;
            stateMachine.async = async;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        [AsyncStateMachine(typeof(<ReadIntAsync>d__6))]
        public static Task<int> ReadIntAsync(Stream stream, bool async, CancellationToken cancellationToken)
        {
            <ReadIntAsync>d__6 stateMachine = default(<ReadIntAsync>d__6);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<int>.Create();
            stateMachine.stream = stream;
            stateMachine.async = async;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        [AsyncStateMachine(typeof(<ReadFloatAsync>d__7))]
        public static Task<float> ReadFloatAsync(Stream stream, bool async, CancellationToken cancellationToken)
        {
            <ReadFloatAsync>d__7 stateMachine = default(<ReadFloatAsync>d__7);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<float>.Create();
            stateMachine.stream = stream;
            stateMachine.async = async;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        [AsyncStateMachine(typeof(<ReadDoubleAsync>d__8))]
        public static Task<double> ReadDoubleAsync(Stream stream, bool async, CancellationToken cancellationToken)
        {
            <ReadDoubleAsync>d__8 stateMachine = default(<ReadDoubleAsync>d__8);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<double>.Create();
            stateMachine.stream = stream;
            stateMachine.async = async;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        [AsyncStateMachine(typeof(<ReadBytesAsync>d__9))]
        public static Task<byte[]> ReadBytesAsync(Stream stream, bool async, CancellationToken cancellationToken)
        {
            <ReadBytesAsync>d__9 stateMachine = default(<ReadBytesAsync>d__9);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<byte[]>.Create();
            stateMachine.stream = stream;
            stateMachine.async = async;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        [AsyncStateMachine(typeof(<ReadStringAsync>d__10))]
        public static Task<string> ReadStringAsync(Stream stream, bool async, CancellationToken cancellationToken)
        {
            <ReadStringAsync>d__10 stateMachine = default(<ReadStringAsync>d__10);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<string>.Create();
            stateMachine.stream = stream;
            stateMachine.async = async;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        [AsyncStateMachine(typeof(<ReadMapPairAsync>d__11<>))]
        private static Task<KeyValuePair<string, T>> ReadMapPairAsync<T>(Stream stream, Func<Stream, bool, CancellationToken, Task<T>> parseItemAsync, bool async, CancellationToken cancellationToken)
        {
            <ReadMapPairAsync>d__11<T> stateMachine = default(<ReadMapPairAsync>d__11<T>);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<KeyValuePair<string, T>>.Create();
            stateMachine.stream = stream;
            stateMachine.parseItemAsync = parseItemAsync;
            stateMachine.async = async;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        [AsyncStateMachine(typeof(<ReadMapAsync>d__12<>))]
        public static Task<Dictionary<string, T>> ReadMapAsync<T>(Stream stream, Func<Stream, bool, CancellationToken, Task<T>> parseItemAsync, bool async, CancellationToken cancellationToken)
        {
            <ReadMapAsync>d__12<T> stateMachine = default(<ReadMapAsync>d__12<T>);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<Dictionary<string, T>>.Create();
            stateMachine.stream = stream;
            stateMachine.parseItemAsync = parseItemAsync;
            stateMachine.async = async;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        [AsyncStateMachine(typeof(<ReadArrayAsync>d__13<>))]
        private static Task<IEnumerable<T>> ReadArrayAsync<T>(Stream stream, Func<Stream, bool, CancellationToken, Task<T>> parseItemAsync, bool async, CancellationToken cancellationToken)
        {
            <ReadArrayAsync>d__13<T> stateMachine = default(<ReadArrayAsync>d__13<T>);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<IEnumerable<T>>.Create();
            stateMachine.stream = stream;
            stateMachine.parseItemAsync = parseItemAsync;
            stateMachine.async = async;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        internal static List<T> Map<T>(this JsonElement array, Func<JsonElement, T> selector)
        {
            List<T> list = new List<T>();
            foreach (JsonElement item in array.EnumerateArray()) {
                list.Add(selector(item));
            }
            return list;
        }
        internal static Dictionary<string, T> ToDictionary<T>(this IEnumerable<KeyValuePair<string, T>> values)
        {
            Dictionary<string, T> dictionary = new Dictionary<string, T>();
            foreach (KeyValuePair<string, T> value in values) {
                dictionary[value.Key] = value.Value;
            }
            return dictionary;
        }
    }
}