public override void SetValue(Object obj, Object value, BindingFlags invokeAttr, Binder binder, Object[] index, CultureInfo culture) {
if (index == null || index.Length == 0)
this.GetSetMethod(false).Invoke(obj, invokeAttr, binder, new Object[]{value}, culture);
else{
int n = index.Length;
Object[] args = new Object[n+1];
ArrayObject.Copy(index, 0, args, 0, n);
args[n] = value;
this.GetSetMethod(false).Invoke(obj, invokeAttr, binder, args, culture);
}
}