Confusion always arises due to the use of 'Friend' in
VB which has nothing to do with the meaning of 'friend' in C++.
Protected internal is not a solution since the 'friend' concept in C++ only involves explicitly specified cooperating classes, not every class in the assembly or derivation chain.