IParticleWriter Node1 IParticleWriter + IParticleWriter() + ~IParticleWriter() + fill() + flush() Node2 std::unique_ptr< details ::IParticleWriterBase > + operator->() Node2->Node1 -m_writer Node3 details::IParticleWriterBase + ~IParticleWriterBase() + fill() + flush() Node3->Node2 +ptr