Was passiert, wenn .NET 4.0 auf eine .NET 2.0-Assembly verweist?

Was genau macht die .NET 4.0-Laufzeit, wenn eine .NET 4.0-Programmdatei einen Verweis auf eine .NET 2.0-Assembly enthält?

Ist die .NET 2.0-Assembly mit der .NET 4.0-Laufzeit ausgeführt (mit anderen Worten, .NET 4.0 muss zu 100% API-kompatibel zu .NET 2.0 sein) oder hostet der Prozess die .NET 2.0-Laufzeit und etwas Magie passiert die .NET 2.0-Typen für meinen .NET 4.0-basierten Code transparent machen?