Thaddy:
1. Again I want to ask you to keep your tone normal. Accusing me and calling me names doesn't help in the discussion.
2. I have explained, hopefully quite clearly, why I prefer the Corba interfaces in the chapters "9.1. Good (CORBA) interfaces" and "9.2. CORBA and COM types of interfaces". The CORBA interfaces are how Java and C# interfaces work, too (there are links to Java and C# specs in the book). So I know I'm not the only person who prefers interfaces to work more like CORBA than COM.
If you don't agree, then please discuss this with people who designed Java interfaces, and C# interfaces, and Pascal CORBA interfaces.
3. As I said in other thread, repeatedly, I have actually applied some of your corrections you have send me long time ago about COM interfaces. The first chapter about COM interfaces only shows the correct usage of COM interfaces.
In the following chapter "9.5. Using COM interfaces with reference-counting disabled" I mention the usage with mixing, but with a very clear warning "don't do it, or you need to watch our for temporary interface variables, so it's probably not the best way to use COM interfaces". So I don't advice this usage myself. But it's not my invention. The standard Pascal library contains the TComponent type that contains the _AddRef / _Release implemented to disable ref-counting, to enable this usage. And people are doing this themselves, just google for "delphi reference counting" to easily find example where people are defining _AddRef / _Release to "avoid" reference counting but still have interfaces.
If you don't agree with this usage, then discuss this with people who designed the Pascal and Delphi to allow it, and who implemented the TComponent methods to allow it. I only show it with a clear warning "it's dangerous, watch out for temp variables, you're better just using CORBA interfaces in that case".