Ringer::IRingerProcedureWrapper< Discrimination::IDiscriminator > Node1 Ringer::IRingerProcedure Wrapper< Discrimination ::IDiscriminator > + wrapName + name() + hasPP() + execute() + setRawConfCol() + getRawConfCol() + getSegType() + getExtraDescriptionPatterns() + execute() + writeCol() + read() # IRingerProcedureWrapper() * execute() * setRawConfCol() * getRawConfCol() * getSegType() * getExtraDescriptionPatterns() * execute() Node2 IRedirectMsgStream Node2->Node1 Node3 Ringer::IRingerProcedure WrapperBase + empty() + write() + name() + etaDep() + etDep() + releaseMemory() + fullName() + print() + ~IRingerProcedureWrapperBase() Node3->Node1