smell DIAMOND INHERITANCE added
diff --git a/org.eclipse.emf.refactor.smells.uml24/bin/org/eclipse/emf/refactor/smells/uml24/DiamondInheritance.class b/org.eclipse.emf.refactor.smells.uml24/bin/org/eclipse/emf/refactor/smells/uml24/DiamondInheritance.class
new file mode 100644
index 0000000..63039ad
--- /dev/null
+++ b/org.eclipse.emf.refactor.smells.uml24/bin/org/eclipse/emf/refactor/smells/uml24/DiamondInheritance.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.smells.uml24/plugin.xml b/org.eclipse.emf.refactor.smells.uml24/plugin.xml
index 6590eb5..8b86430 100644
--- a/org.eclipse.emf.refactor.smells.uml24/plugin.xml
+++ b/org.eclipse.emf.refactor.smells.uml24/plugin.xml
@@ -8,6 +8,13 @@
       modelsmell_metamodel="http://www.eclipse.org/uml2/4.0.0/UML" 

       modelsmell_name="Concrete Superclass">

 </modelsmell>

+<modelsmell 

+      id="org.eclipse.emf.refactor.smells.uml24.diamondinheritance" 

+      modelsmell_description="A Class inherits from another one multiple times" 

+      modelsmell_finderclass="org.eclipse.emf.refactor.smells.uml24.DiamondInheritance" 

+      modelsmell_metamodel="http://www.eclipse.org/uml2/4.0.0/UML" 

+      modelsmell_name="Diamond Inheritance">

+</modelsmell>

 <modelsmell

       id="org.eclipse.emf.refactor.smells.uml24.equalattributesinsiblingclasses"

       modelsmell_description="Each sibling class of the owning class of the attribute contains an equal attribute."

diff --git a/org.eclipse.emf.refactor.smells.uml24/src/org/eclipse/emf/refactor/smells/uml24/DiamondInheritance.java b/org.eclipse.emf.refactor.smells.uml24/src/org/eclipse/emf/refactor/smells/uml24/DiamondInheritance.java
new file mode 100644
index 0000000..b55dc0f
--- /dev/null
+++ b/org.eclipse.emf.refactor.smells.uml24/src/org/eclipse/emf/refactor/smells/uml24/DiamondInheritance.java
@@ -0,0 +1,74 @@
+package org.eclipse.emf.refactor.smells.uml24;

+

+import java.util.ArrayList;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.emf.common.util.TreeIterator;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.refactor.smells.interfaces.IModelSmellFinder;

+import org.eclipse.uml2.uml.Class;

+

+public final class DiamondInheritance implements IModelSmellFinder {

+

+	@Override

+	public LinkedList<LinkedList<EObject>> findSmell(EObject root) {

+		LinkedList<LinkedList<EObject>> results = new LinkedList<LinkedList<EObject>>();

+		// begin custom code

+		List<Class> classes = getAllClasses(root);

+		for (Class cl : classes) {

+			if (cl.getSuperClasses().size() > 1) {

+				for (int i = 0; i < cl.getSuperClasses().size(); i++) {

+					Class cl1 = cl.getSuperClasses().get(i);

+//				}

+//				for (Class cl1 : cl.getSuperClasses()) {

+					for (int j = (i+1); j < cl.getSuperClasses().size(); j++) {

+						Class cl2 = cl.getSuperClasses().get(j);

+//					}

+//					for (Class cl2 : cl.getSuperClasses()) {

+//						if (cl1 != cl2) {

+							List<Class> superclasses1 = getAllSuperclasses(cl1);

+							List<Class> superclasses2 = getAllSuperclasses(cl2);

+							for (Class superclass : superclasses1) {

+								if (superclasses2.contains(superclass)) {

+									LinkedList<EObject> result = new LinkedList<EObject>();

+									result.add(cl);

+									result.add(cl1);

+									result.add(cl2);

+									result.add(superclass);

+									results.add(result);

+								}

+							}

+//						}

+					}

+				}

+			}

+		}

+		// end custom code

+		return results;

+	}

+

+	private List<Class> getAllSuperclasses(Class cl) {

+		List<Class> superclasses = new ArrayList<Class>();

+		if (cl.getSuperClasses().isEmpty()) return superclasses;

+		superclasses.addAll(cl.getSuperClasses());

+		for (Class superclass : cl.getSuperClasses()) {

+			superclasses.addAll(getAllSuperclasses(superclass));

+		}

+		return superclasses;

+	}

+

+	private List<Class> getAllClasses(EObject root) {

+		List<Class> classes = new ArrayList<Class>();

+		TreeIterator<EObject> iter = root.eAllContents();

+		while (iter.hasNext()) {

+			EObject eObject = iter.next();

+			if (eObject instanceof Class) {

+				Class cl = (Class) eObject;

+				classes.add(cl);

+			}

+		}

+		return classes;

+	}

+	

+}
\ No newline at end of file