self.Association->forAll(ass : AssociationType1 | 
	(
		ass.sourceObject.oclIsUndefined() or 
		self.ExtrinsicObject->exists(ext : ExtrinsicObjectType | (not ext.id.oclIsUndefined()) and ext.id=ass.sourceObject) or 
		self.Association->forAll(ass2 : AssociationType1 | (not ass2.id.oclIsUndefined()) and ass2.id=ass.sourceObject)
	) and 
	(
		ass.targetObject.oclIsUndefined() or 
		self.ExtrinsicObject->exists(ext : ExtrinsicObjectType | (not ext.id.oclIsUndefined()) and ext.id=ass.targetObject) or 
		self.Association->forAll(ass2 : AssociationType1 | (not ass2.id.oclIsUndefined()) and ass2.id=ass.targetObject)
	)
	
)