package test {
		
	native testFail(string msg)
	native testSuccess()


	module A {
		int x
	
		public function setX(int x) {
			this.x = x
		}
		
		public function getX(int x) {
			return x
		}
	}
	
	module B {
		use A
	}
	
	module C {
		use A
	}
	
	
	class C {
		use A
		use B
		
		override public function foo() returns int {
			return 4
		}
		
	}		
	
	
	
	init {
		C c = new C()
		
		
		
		if c.foo() != 4 {
			testFail("foo fail")
		} 
			
		testSuccess()
	}
}
