Ringer::IRingerProcedureWrapper< PreProcessing::IPreProcessor > Node1 Ringer::IRingerProcedure Wrapper< PreProcessing ::IPreProcessor > + wrapName + applyPreProcessing() + setRawConfCol() + getRawConfCol() + getSegType() + applyPreProcessing() + name() + ~IRingerProcedureWrapper() + writeCol() + read() # IRingerProcedureWrapper() Node4 Ringer::RingerProcedureWrapper < procedure_t, etaDependency, etDependency, segType, true, false, false > - m_ppCol - m_pp - m_rsRawConfCol - m_nRings + RingerProcedureWrapper() + applyPreProcessing() + applyPreProcessing() - checkPPCol() * PPDepProcCollection * m_ppCol * m_pp * m_rsRawConfCol * m_nRings * RingerProcedureWrapper() * applyPreProcessing() * applyPreProcessing() * setRawConfCol() * getRawConfCol() * getSegType() * empty() * etaDep() * etDep() * releaseMemory() * setMsgStream() * fullName() * print() * write() * staticFullName() * read() * checkPPCol() Node1->Node4 Node2 IRedirectMsgStream Node2->Node1 Node3 Ringer::IRingerProcedure WrapperBase + empty() + write() + name() + etaDep() + etDep() + releaseMemory() + fullName() + print() + ~IRingerProcedureWrapperBase() Node3->Node1