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

mapping main(in model: ecore::EPackage): ecore::EPackage {
	init {
		var resultName := 'WRONG';
		resultName := 'OK';
	}
	name := 'WRONG_AGAIN';
    end {
    	result.name := resultName;
    	var c1 : OrderedSet(ecore::EClassifier) := result.eClassifiers;
		c1 += OrderedSet { object ecore::EClass {
			name := 'MUST_NOT_BE_ADDED';
		}};
		c1 += object ecore::EClass {
			name := 'MUST_NOT_BE_ADDED';
		};
    	var c2 : OrderedSet(ecore::EClassifier) := OrderedSet {};
    	var c3 := c2;
    	c2 += OrderedSet { object ecore::EClass {
			name := 'MUST_NOT_BE_ADDED';
		}};
		c2 += object ecore::EClass {
			name := 'MUST_NOT_BE_ADDED';
		};
		result.eClassifiers += c3;
		var c4 : OrderedSet(ecore::EClassifier) := OrderedSet {};
		c4 += OrderedSet { object ecore::EClass {
			name := 'OK1';
		}};
		c4 += object ecore::EClass {
			name := 'OK2';
		};
		result.eClassifiers += c4;
    }
}