Platform-dependent types have different sizes on different target platforms, while platform-independent types have the same size on all target platforms. Casts between platform-dependent and platform-independent types will have different behaviours on different target platforms, and should be removed.
Platform-dependent types include:
NativeInt and NativeUintRefactor the code so that platform-dependent and platform-independent types are not cast to each other.