transformation resolve_resolveoneIn;

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.resolveoneIn(ecore::ENamedElement::createEClass2, ecore::EPackage);
	}
    	name := 'result';
    	eSubpackages += res;
}

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

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