*fix
diff --git a/core/plugins/org.eclipse.dltk.core/search/org/eclipse/dltk/core/mixin/MixinModel.java b/core/plugins/org.eclipse.dltk.core/search/org/eclipse/dltk/core/mixin/MixinModel.java
index 08595bb..14e1afc 100644
--- a/core/plugins/org.eclipse.dltk.core/search/org/eclipse/dltk/core/mixin/MixinModel.java
+++ b/core/plugins/org.eclipse.dltk.core/search/org/eclipse/dltk/core/mixin/MixinModel.java
@@ -203,8 +203,8 @@
 		// int i = 0;
 		for (Iterator iterator = entry.keys.iterator(); iterator.hasNext();) {
 			MixinElement element = getCreateEmpty((String) iterator.next());
-			addKeyToSet(result, element);
 			markElementAsFinal(element);
+			addKeyToSet(result, element);
 		}
 		if (TRACE) {
 			long end = System.currentTimeMillis();
@@ -222,7 +222,8 @@
 		result.add(element);
 		existKeysCache.add(element.key);
 		notExistKeysCache.remove(element.key);
-		IMixinElement[] children = element.getChildren();
+		IMixinElement[] children = (IMixinElement[]) element.children
+				.toArray(new IMixinElement[element.children.size()]);
 		for (int i = 0; i < children.length; i++) {
 			addKeyToSet(result, (MixinElement) children[i]);
 		}