public MetadataParameterInfoAdapter(MetadataTypeInfoAdapter2 typeInfo,
                                     MetadataMethodInfoAdapter2 methodInfo, IMetadataParameter parameter)
 {
     this.typeInfo   = typeInfo;
     this.methodInfo = methodInfo;
     this.parameter  = parameter;
 }
 public MetadataParameterInfoAdapter(MetadataTypeInfoAdapter2 typeInfo, 
     MetadataMethodInfoAdapter2 methodInfo, IMetadataParameter parameter)
 {
     this.typeInfo = typeInfo;
     this.methodInfo = methodInfo;
     this.parameter = parameter;
 }
        GetParameters(MetadataReader reader, TypeReferenceTypeProvider typeProvider, GenericContext genericContext, MethodSignature <MetadataTypeReference> signature, ParameterHandleCollection handles)
        {
            var parameters            = new IMetadataParameter[handles.Count];
            var returnValueAttributes = (IReadOnlyList <IMetadataAttribute>)null;

            var maxSequenceNumber = 0;

            foreach (var handle in handles)
            {
                var parameter = reader.GetParameter(handle);
                if (parameter.SequenceNumber == 0)
                {
                    returnValueAttributes = GetAttributes(reader, typeProvider, parameter.GetCustomAttributes(), genericContext);
                    continue;
                }
                if (maxSequenceNumber < parameter.SequenceNumber)
                {
                    maxSequenceNumber = parameter.SequenceNumber;
                }
                var parameterIndex = parameter.SequenceNumber - 1;
                parameters[parameterIndex] = new ReaderParameter(reader, typeProvider, parameter, genericContext, signature.ParameterTypes[parameterIndex]);
            }

            if (maxSequenceNumber == parameters.Length)
            {
                return(parameters, Array.Empty <IMetadataAttribute>());
            }

            // Account for skipping the return parameter
            var correctedLength = new IMetadataParameter[maxSequenceNumber];

            Array.Copy(parameters, correctedLength, correctedLength.Length);
            return(correctedLength, returnValueAttributes);
        }