public FluentEmitter Ldarg(params uint[] indexes)
{
if (indexes == null)
throw new ArgumentNullException(nameof(indexes));
foreach (var i in indexes)
{
if (Parameters.Count + (MethodDefinition.HasThis ? 1 : 0) <= i)
throw new IndexOutOfRangeException($"no parameter found at index {i}");
switch (i)
{
case 0:
Emit(OpCodes.Ldarg_0);
break;
case 1:
Emit(OpCodes.Ldarg_1);
break;
case 2:
Emit(OpCodes.Ldarg_2);
break;
case 3:
Emit(OpCodes.Ldarg_3);
break;
default:
Emit(i < sbyte.MaxValue ? OpCodes.Ldarg_S : OpCodes.Ldarg, Parameters[(int)i]);
break;
}
}
return this;
}