transformation iteratetest;

modeltype ECORE uses 'http://www.eclipse.org/emf/2002/Ecore';

mapping main(in root: ecore::EPackage): ecore::EPackage {
	name := 'iteratetest';
	eSubpackages += object ecore::EPackage {
		name := 'explicit';
		eClassifiers := root.eClassifiers->iterate(c; set1 : OrderedSet(ecore::EClassifier) = OrderedSet {} | 
			set1->including(object ecore::EClass { name := c.name })->asOrderedSet())
	};
	eSubpackages += object ecore::EPackage {
		name := 'implicit';
		var tmp := root.eClassifiers->iterate(set2 : OrderedSet(String) = OrderedSet {} | 
			set2->including(name)->asOrderedSet());
		eClassifiers := tmp->iterate(c; set2 : OrderedSet(ecore::EClassifier) = OrderedSet {} | 
			set2->including(object ecore::EClass { name := c })->asOrderedSet())
	};
}
