Created ElementCollectionVisitor that allows to remove element creation logic from compiler pass