I emailed the .NET Native team asking them about this. They confirmed that they reverse out IL to higher-level constructs. So they aren't really working at the IL level, they're working on C# represented as IL.
This isn't entirely uncommon. A lot of code that deals with Expression<T> does so very poorly and won't work on many valid trees because they weren't able to get C# to emit certain expressions.
This isn't entirely uncommon. A lot of code that deals with Expression<T> does so very poorly and won't work on many valid trees because they weren't able to get C# to emit certain expressions.