internal MethodInfo GetExpandoIndexerGetter(){
if (this.getItem == null){
TypeBuilder classwriter = this.classob.GetTypeBuilder();
this.GetExpandoFieldGetter(classwriter);
// create the getter
this.getItem = classwriter.DefineMethod("get_Item", MethodAttributes.Public|MethodAttributes.SpecialName, Typeob.Object, new Type[]{Typeob.String});
ILGenerator il = this.getItem.GetILGenerator();
il.Emit(OpCodes.Ldarg_0);
il.Emit(OpCodes.Call, this.getHashTableMethod);
il.Emit(OpCodes.Ldarg_1);
il.Emit(OpCodes.Call, CompilerGlobals.hashtableGetItem);
il.Emit(OpCodes.Dup);
Label endif = il.DefineLabel();
il.Emit(OpCodes.Brtrue_S, endif);
il.Emit(OpCodes.Pop);
il.Emit(OpCodes.Ldsfld, CompilerGlobals.missingField);
il.MarkLabel(endif);
il.Emit(OpCodes.Ret);
this.expandoItemProp.SetGetMethod(this.getItem);
}
return this.getItem;
}