"bases" contains a set of PythonTypes. These can include types defined in Python (say cpy1, cpy2), CLI types (say cCLI1, cCLI2), and CLI interfaces (say iCLI1, iCLI2). Here are some examples of how this works: (bases) => baseType, {interfaceTypes} (cpy1) => System.Object, {} (cpy1, cpy2) => System.Object, {} (cpy1, cCLI1, iCLI1, iCLI2) => cCLI1, {iCLI1, iCLI2} [some type that satisfies the line above] => cCLI1, {iCLI1, iCLI2} (cCLI1, cCLI2) => error