These changes fix 14335. When in getcontractinternal various things can confuse the host processing of ContractInterfaces. I only identified and fixed a couple so far and they fix problems with multiple inheritance of contracts and deep hierarchies. It is looking to verify that all of the contract interfaces it has in the list inherit from the root interface. However when IA and IB inherit from the IRoot. It will iterate nxn times and with multiple inehritance it will eventuall get a 1A and verify that it inherits from iroot it gois along until it verifies that A inherits from the root then finds it cannot verify IA becuase because it is checking to see if IB inherits from it. It doesnt because both of them are peers and inheit from IRoot. This threw an exception. I fixes that and a couple of related bugs.

 Please enter the commit message for your changes. Lines starting