import  cs : 'ClassesCS.ecore#/'
import  as : 'Classes.ecore#/'
import 'classescs2asLookup.ocl'
import 'classescs2asDisambiguation.ocl'
package cs

context RootCS
def : ast() : as::Root =
	as::Root {
		ownedPackages = ownedPackages.ast()->asOrderedSet() 
	}
context PackageCS
def : ast() : as::Package =
	as::Package {
		name = name, 
	ownedClasses = ownedClasses.ast()->asOrderedSet(),
	ownedPackages = ownedPackages.ast()->asOrderedSet()  
	}
context ClassCS
def : ast() : classes::Class =
	classes::Class {
		name = name, 
	superClass = if _extends = null then null else ast() .lookupClass(_extends) endif 
	}
endpackage
