This document lists some important changes between MCS and GMCS. * Defining Types There's a fundamental change in how we're defining types in TypeContainer.DefineType(). In MCS, we resolve a type's parent type and the interface it implements before actually creating the TypeBuilder. We can easily detect "recursive" declarations (CS0146) if DefineType() is called recursively. This has changed in GMCS since the following type of a recursive declaration is allowed: class Foo { } class Bar : Foo> { } To allow this, we must define Bar's TypeBuilder before resolving its parent classes and call TypeBuilder.SetParent() later. Last updated September 9th, 2004 Martin Baulig