transformation resolve_resolveone;

modeltype A uses ecore('http://www.eclipse.org/emf/2002/Ecore');

mapping main(in model: ecore::EPackage): ecore::EPackage {
	init {
		var all := model.allInstances(ecore::ENamedElement)->including(model)->asOrderedSet();
		var all1 := all.createEClass1();
		var all2 := all.createEClass2();
		var i := 1;
		var n := all1->size();
		var res : ecore::EPackage := model.resolveone(t : ecore::EPackage | t.name = 'mapped2root');
	}
    	name := 'result';
    	eSubpackages += res;
}

mapping ecore::ENamedElement::createEClass1() : ecore::EClass {
		name := 'mapped1' + self.name;
}

mapping ecore::ENamedElement::createEClass2() : ecore::EPackage {
		name := 'mapped2' + self.name;
}