Awesome work! I just had some thoughts on the readability of this block. In my mind it would be easier to follow the code if it didn't use the `.Key`/`.Value` properties so much. Also, since only the last suitable interface is used as the actual parent, I figured `.LastOrDefault` would be nice to remove the `for`-loop.
```c#
var tsInterfaces = tsMap.Values.ToList();
tsMap.Keys.ToList().ForEach(codeClass =>
{
    var parent = tsInterfaces.FirstOrDefault(intf => codeClass.IsDerivedFrom[intf.FullName] && intf.FullName != codeClass.FullName);
    if (parent != null)
        tsMap[codeClass].Parent = parent;
});
```
What do you think of this?