Currently struct fields are marshaled manually through the *_Internal structs. It works fine for regular and virtual method calls, but do not work for cases where the struct is marshaled in a delegate (e.g. an event handler, like the loop arguments events).
Ideally, the fields should declare marshall annotations so we can use custom marshallers for each case.
This affects D7495 (which temporarily solved by adding the StructLayout argument).