Index: src/ResolvExpr/CurrentObject.cc
===================================================================
--- src/ResolvExpr/CurrentObject.cc	(revision ba4a1d8c09106fcb307f09f287e5b399769b864c)
+++ src/ResolvExpr/CurrentObject.cc	(revision 99614c25485a445fe8b29250bef7718bb7bb7883)
@@ -65,6 +65,6 @@
 		virtual void setPosition( std::list< Expression * > & designators ) = 0;
 
-		/// retrieve the list of possible Type/Designaton pairs for the current position in the currect object
-		virtual std::list<InitAlternative> operator*() const = 0;
+		/// retrieve the vector of possible Type/Designaton pairs for the current position in the currect object
+		virtual std::vector<InitAlternative> operator*() const = 0;
 
 		/// true if the iterator is not currently at the end
@@ -88,5 +88,5 @@
 		/// helper for operator*; aggregates must add designator to each init alternative, but
 		/// adding designators in operator* creates duplicates.
-		virtual std::list<InitAlternative> first() const = 0; // should be protected
+		virtual std::vector<InitAlternative> first() const = 0; // should be protected
 	};
 
@@ -109,5 +109,5 @@
 		}
 
-		virtual std::list<InitAlternative> operator*() const { return first(); }
+		virtual std::vector<InitAlternative> operator*() const { return first(); }
 		virtual operator bool() const { return type; }
 
@@ -127,7 +127,7 @@
 
 	protected:
-		virtual std::list<InitAlternative> first() const {
-			if ( type ) return std::list<InitAlternative>{ { type->clone(), new Designation( {} ) } };
-			else return std::list<InitAlternative>{};
+		virtual std::vector<InitAlternative> first() const {
+			if ( type ) return std::vector<InitAlternative>{ { type->clone(), new Designation( {} ) } };
+			else return std::vector<InitAlternative>{};
 		}
 	private:
@@ -192,5 +192,5 @@
 		}
 
-		virtual std::list<InitAlternative> operator*() const {
+		virtual std::vector<InitAlternative> operator*() const {
 			return first();
 		}
@@ -223,8 +223,8 @@
 		virtual Type * getNext() { return base; }
 
-		virtual std::list<InitAlternative> first() const {
+		virtual std::vector<InitAlternative> first() const {
 			PRINT( std::cerr << "first in ArrayIterator (" << index << "/" << size << ")" << std::endl; )
 			if ( memberIter && *memberIter ) {
-				std::list<InitAlternative> ret = memberIter->first();
+				std::vector<InitAlternative> ret = memberIter->first();
 				for ( InitAlternative & alt : ret ) {
 					alt.designation->get_designators().push_front( new ConstantExpr( Constant::from_ulong( index ) ) );
@@ -232,5 +232,5 @@
 				return ret;
 			}
-			return std::list<InitAlternative>();
+			return std::vector<InitAlternative>();
 		}
 
@@ -288,7 +288,7 @@
 		}
 
-		virtual std::list<InitAlternative> operator*() const {
+		virtual std::vector<InitAlternative> operator*() const {
 			if (memberIter && *memberIter) {
-				std::list<InitAlternative> ret = memberIter->first();
+				std::vector<InitAlternative> ret = memberIter->first();
 				PRINT( std::cerr << "sub: " << sub << std::endl; )
 				for ( InitAlternative & alt : ret ) {
@@ -302,5 +302,5 @@
 				return ret;
 			}
-			return std::list<InitAlternative>();
+			return std::vector<InitAlternative>();
 		}
 
@@ -346,6 +346,6 @@
 		}
 
-		virtual std::list<InitAlternative> first() const {
-			std::list<InitAlternative> ret;
+		virtual std::vector<InitAlternative> first() const {
+			std::vector<InitAlternative> ret;
 			PRINT( std::cerr << "first " << kind << std::endl; )
 			if ( memberIter && *memberIter ) { // might not need *memberIter??
@@ -361,5 +361,5 @@
 				// only add self if at the very beginning of the structure
 				PRINT( std::cerr << "adding self" << std::endl; )
-				ret.push_front( { inst->clone(), new Designation( {} ) } );
+				ret.insert(ret.begin(), { inst->clone(), new Designation( {} ) } );
 			}
 			return ret;
@@ -566,5 +566,5 @@
 	}
 
-	std::list< InitAlternative > CurrentObject::getOptions() {
+	std::vector< InitAlternative > CurrentObject::getOptions() {
 		PRINT( std::cerr << "____getting current options" << std::endl; )
 		assertf( ! objStack.empty(), "objstack empty in getOptions" );
