<html>
<body>
<h1>Validation report</h1>
<ul>
	<li>
	<span style="color:green">
		Constraint HasName passed for object org.eclipse.emf.ecore.impl.DynamicEObjectImpl@2884e0 (eClass: org.eclipse.emf.ecore.impl.EClassImpl@5f701b (name: Model) (instanceClassName: null) (abstract: false, interface: false))
	</span>
	<li>
	<span style="color:green">
		Constraint HasName passed for object org.eclipse.emf.ecore.impl.DynamicEObjectImpl@2b8e34 (eClass: org.eclipse.emf.ecore.impl.EClassImpl@1658c0a (name: Class) (instanceClassName: null) (abstract: false, interface: false))
	</span>
	<li>
	<span style="color:red">
		Constraint HasName failed for object org.eclipse.emf.ecore.impl.DynamicEObjectImpl@1852b4c (eClass: org.eclipse.emf.ecore.impl.EClassImpl@5f3861 (name: Attribute) (instanceClassName: null) (abstract: false, interface: false))
	</span>
	<li>
	<span style="color:green">
		Constraint HasName passed for object org.eclipse.emf.ecore.impl.DynamicEObjectImpl@1ddbfac (eClass: org.eclipse.emf.ecore.impl.EClassImpl@1b8fdd4 (name: Package) (instanceClassName: null) (abstract: false, interface: false))
	</span>
	<li>
	<span style="color:green">
		Constraint HasName passed for object org.eclipse.emf.ecore.impl.DynamicEObjectImpl@152e245 (eClass: org.eclipse.emf.ecore.impl.EClassImpl@1658c0a (name: Class) (instanceClassName: null) (abstract: false, interface: false))
	</span>
	<li>
	<span style="color:green">
		Constraint NameShouldStartWithUpperCase passed for object org.eclipse.emf.ecore.impl.DynamicEObjectImpl@2b8e34 (eClass: org.eclipse.emf.ecore.impl.EClassImpl@1658c0a (name: Class) (instanceClassName: null) (abstract: false, interface: false))
	</span>
	<li>
	<span style="color:red">
		Constraint MustNotInheritItself failed for object org.eclipse.emf.ecore.impl.DynamicEObjectImpl@2b8e34 (eClass: org.eclipse.emf.ecore.impl.EClassImpl@1658c0a (name: Class) (instanceClassName: null) (abstract: false, interface: false))
	</span>
	<li>
	<span style="color:green">
		Constraint UnusedClass passed for object org.eclipse.emf.ecore.impl.DynamicEObjectImpl@2b8e34 (eClass: org.eclipse.emf.ecore.impl.EClassImpl@1658c0a (name: Class) (instanceClassName: null) (abstract: false, interface: false))
	</span>
	<li>
	<span style="color:red">
		Constraint NameShouldStartWithUpperCase failed for object org.eclipse.emf.ecore.impl.DynamicEObjectImpl@152e245 (eClass: org.eclipse.emf.ecore.impl.EClassImpl@1658c0a (name: Class) (instanceClassName: null) (abstract: false, interface: false))
	</span>
	<li>
	<span style="color:red">
		Constraint MustNotInheritItself failed for object org.eclipse.emf.ecore.impl.DynamicEObjectImpl@152e245 (eClass: org.eclipse.emf.ecore.impl.EClassImpl@1658c0a (name: Class) (instanceClassName: null) (abstract: false, interface: false))
	</span>
	<li>
	<span style="color:green">
		Constraint UnusedClass passed for object org.eclipse.emf.ecore.impl.DynamicEObjectImpl@152e245 (eClass: org.eclipse.emf.ecore.impl.EClassImpl@1658c0a (name: Class) (instanceClassName: null) (abstract: false, interface: false))
	</span>
</ul>
</body>
</html>