internal override void SetObject(TargetMemoryAccess target, TargetLocation location, TargetObject obj) { TargetLocation flag_loc = location.GetLocationAtOffset(ElementType.Size); byte[] buffer = new byte [1]; if (obj is TargetNullObject) { buffer [0] = 0; flag_loc.WriteBuffer(target, buffer); return; } MonoNullableObject nobj = obj as MonoNullableObject; if (nobj != null) { if (!nobj.HasValue(target)) { buffer [0] = 0; flag_loc.WriteBuffer(target, buffer); return; } else { obj = nobj.GetValue(target); } } buffer [0] = 1; flag_loc.WriteBuffer(target, buffer); ElementType.SetObject(target, location, obj); }