void validate() { // check for cyclic inheritance IInterface* base = _baseType; while( base ) { if( base == _myType ) CORAL_THROW( IllegalStateException, "cyclic inheritance detected'" ); base = base->getBaseType(); } _myType->updateSuperTypes(); // check for member clashes, considering all super types IInterface* type = _myType; Range<IInterface* const> superTypes = type->getSuperTypes(); while( 1 ) { Range<IMember* const> members = type->getMembers(); for( ; members; members.popFirst() ) checkForMemberClashes( members.getFirst() ); if( !superTypes ) break; type = superTypes.getFirst(); superTypes.popFirst(); } }