Note m_requirePopulateNext has been introduced to ensure each internal container lives as long as all the references passed out from its elements (previously it would be destroyed before the last element was finished with).