593 {
594 var parameterBuilders = new ParameterBuilder[parameterCount];
595 Dictionary<string, int> clashes = null;
596 for (int i = 0; i < parameterBuilders.Length; i++)
597 {
598 string name = null;
599 if (parameterNames != null && parameterNames[i] != null)
600 {
601 name = parameterNames[i];
602 if (Array.IndexOf(parameterNames, name, i + 1) >= 0 || (clashes != null && clashes.ContainsKey(name)))
603 {
604 clashes ??= new Dictionary<string, int>();
605
606 int clash = 1;
607 if (clashes.ContainsKey(name))
608 clash = clashes[name] + 1;
609
610 clashes[name] = clash;
611 name += clash;
612 }
613 }
614 parameterBuilders[i] = mb.DefineParameter(i + 1, ParameterAttributes.None, name);
615 }
616 return parameterBuilders;
617 }