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

mapping main(in model: ecore::EPackage): ecore::EPackage {
	init {
		var tmp := model.createEClass();
		model.createEClass(0);
	}
    	name := 'a';
    	eClassifiers += model.resolve(ecore::EClass);
}

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

mapping ecore::ENamedElement::createEClass(in i : Integer) : ecore::EClass {
		  name := 'mapped2' + self.name;
	end {
		switch {
			(i = 1) ? result.name := result.name + 'switch1';
			(i = 2) ? result.name := result.name + 'switch2A'; 
			(i = 3) ? result.name := result.name + 'switch3';
			else ? result.name := result.name + 'else';
		}
	}
}