I believe the new code is correct in all cases because I'm using the IntPtr + operator, and IntPtr maintains its own precision internally. That is:

```text
IntPtr32 + int32 = IntPtr32
IntPtr64 + int32 = IntPtr64
```

Promotion should do the right thing here. <tt>offsetInBytes</tt> only needs to be long/ulong if we have offsets larger than 4GB which seems really unlikely (and would probably break in horrible ways on 32-bit platforms anyway... another reason not to use ToInt64 unless we really mean it).

Just my PoV, of course. I might be wrong here. IntPtr didn't get operator + until .NET 4.0, so I assume that's why the old ToInt64 mess was being used instead (see http://msdn.microsoft.com/en-us/library/system.intptr.op_addition.aspx )