Implementing multiple inheritance on a platform that does not support it is a tough task. For example, the standard generation of ISE Eiffel is to produce C code that reflects the multiple inheritance aspect of the Eiffel classes. However when we do this, our C code is not easily understandable by others, that is why we created the CECIL library.
One could have thought that having an object model like in .NET will make the task easier, but in fact it is even harder. The reason is that the .NET object model and the Eiffel one are quite different and there is no one to one mapping. So some conversion needs to be done to map the Eiffel multiple inheritance model to the .NET one. This is done through the use of multiple inheritance of interfaces as a general mechanism. The goal of this documentation is to explain what the ISE Eiffel compiler needs to perform this task and how it will accomplish it.
A side comment regarding Java. The compiler supports generation of java byte code, but it lacks some feature that are really needed to implement multiple inheritance, renaming or covariance. And this is the reason why our java generation will never match the level we achieved with .NET.