void EmitReadValueType(ILGenerator il, LocalBuilder reader, Type valType)
{
Debug.Assert(valType.IsValueType);
Debug.Assert(!(valType.IsEnum || valType.IsPrimitive));
var fieldRef = il.DeclareLocal(valType.MakeByRefType());
il.Emit(OpCodes.Stloc, fieldRef);
foreach (FieldInfo field in GetSerializableFields(valType)) {
EmitReadField(il, reader, fieldRef, field);
}
}
#endregion