internal static IReadOnlyCollection <FieldResolverArgumentDescriptor> CreateResolverArgumentDescriptors(
            MethodInfo method, Type resolverType, Type sourceType)
        {
            List <FieldResolverArgumentDescriptor> arguments =
                new List <FieldResolverArgumentDescriptor>();

            foreach (ParameterInfo parameter in method.GetParameters())
            {
                FieldResolverArgumentKind kind = FieldResolverArgumentDescriptor
                                                 .LookupKind(parameter.ParameterType, sourceType);
                arguments.Add(FieldResolverArgumentDescriptor.Create(
                                  parameter.Name, kind, parameter.ParameterType));
            }

            return(arguments);
        }
        internal static IReadOnlyCollection <FieldResolverArgumentDescriptor> CreateResolverArgumentDescriptors(
            MethodInfo method, Type sourceType)
        {
            var arguments = new List <FieldResolverArgumentDescriptor>();
            int i         = 0;

            foreach (ParameterInfo parameter in method.GetParameters())
            {
                FieldResolverArgumentKind kind = FieldResolverArgumentDescriptor
                                                 .LookupKind(parameter.ParameterType, sourceType);
                string variableName = $"v{i++}_{parameter.Name}";
                arguments.Add(new FieldResolverArgumentDescriptor(
                                  parameter.Name, variableName, kind, parameter.ParameterType));
            }

            return(arguments);
        }