void InternalSerialize(MethodInfo methodInfo, LocalBuilder memberValue, Type memberType, bool writeXsiType)
{
ilg.Load(contextArg);
ilg.Load(xmlWriterArg);
ilg.Load(memberValue);
ilg.ConvertValue(memberValue.LocalType, Globals.TypeOfObject);
LocalBuilder typeHandleValue = ilg.DeclareLocal(typeof(RuntimeTypeHandle), "typeHandleValue");
ilg.Call(null, typeof(Type).GetMethod("GetTypeHandle"), memberValue);
ilg.Stloc(typeHandleValue);
ilg.LoadAddress(typeHandleValue);
ilg.Ldtoken(memberType);
ilg.Call(typeof(RuntimeTypeHandle).GetMethod("Equals", new Type[] { typeof(RuntimeTypeHandle) }));
ilg.Load(writeXsiType);
ilg.Load(DataContract.GetId(memberType.TypeHandle));
ilg.Ldtoken(memberType);
ilg.Call(methodInfo);
}