private static RType CreateArrayType() { RType arrayType = new RType("Array") {IsArray = true}; RppGenericParameter genericParameter = arrayType.DefineGenericParameters("A")[0]; arrayType.DefineConstructor(RMethodAttributes.Public, new[] {new RppParameterInfo("size", IntTy)}); arrayType.DefineMethod("length", RMethodAttributes.Public, IntTy, new RppParameterInfo[0]); arrayType.DefineMethod("apply", RMethodAttributes.Public, genericParameter.Type, new[] {new RppParameterInfo("index", IntTy)}, new RppGenericParameter[0]); arrayType.DefineMethod("update", RMethodAttributes.Public, UnitTy, new[] {new RppParameterInfo("index", IntTy), new RppParameterInfo("value", genericParameter.Type)}, new RppGenericParameter[0]); return arrayType; }